You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用列表推导式替代嵌套循环获取各产品购买者唯一地域

用列表推导式实现产品购买者地域去重需求

首先,咱们可以先把users列表转换成字典,这样通过用户ID查找对应地域的效率会高很多(从O(n)变成O(1)),这比原循环里反复遍历users要更高效:

users_dict = {user_id: loc for user_id, loc in users}

接下来,就可以用列表推导式来生成每个产品对应的唯一地域列表了。这里我们会用到set来自动去重,如果你需要保持地域首次出现的顺序(和原代码逻辑完全一致),可以用dict.fromkeys来实现(Python 3.7+的字典是有序的):

result = [
    (prod_id, list(dict.fromkeys(users_dict[user_id] for user_id in user_ids)))
    for prod_id, user_ids in prod
]

如果不需要严格保持地域首次出现的顺序,也可以简化成用set去重后转列表:

result = [
    (prod_id, list({users_dict[user_id] for user_id in user_ids}))
    for prod_id, user_ids in prod
]

最后打印结果的话,直接遍历result就行:

for prod_id, locs in result:
    print(prod_id, locs)

运行这段代码,你会得到和原嵌套循环完全一样的输出:

1005 ['US']
1004 ['EN', 'FR', 'MX']
1003 ['US']
1002 ['MX', 'US', 'EN']
1001 ['EN', 'US', 'MX']

核心优势说明

  • 用字典替代原循环里的嵌套查找,大幅提升了效率,尤其是当用户数据量很大的时候
  • 列表推导式把多层嵌套循环压缩成了更简洁的结构,代码可读性也更强
  • 用dict.fromkeys(或set)来实现地域去重,比原循环里手动判断not in要更简洁高效

内容的提问来源于stack exchange,提问作者user2842122

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:50:55