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

优化字典列表遍历代码:高效提取指定ID的id与name字段

优化嵌套字典列表解析的冗余代码

需求:当列表中条目的id匹配指定值(如123)时,输出包含该id和对应who列表中name字段的字典列表,格式示例:[{"id": 123}, {'name': 'bob'}]

原冗余代码

list1 = [{"id": 123, "job": "nurse", "who":[{"user": "bob_user", "name": "bob"}]}, {"id": 456, "job": "teacher", "who":[{"user": "jim_user", "name": "jim"}]}]
list2 = []
keys = ["id", "who"]

for items in list1:
  if items['id'] == 123:
    for key in keys:
      if key == "who":
        for values in items[key]:
          for count in values:
            if count == "name":
              list2.append({key : values[count]})
      else:
        list2.append({key : items[key]})

print(list2)

优化方案1:简化嵌套逻辑,提升可读性

list1 = [{"id": 123, "job": "nurse", "who":[{"user": "bob_user", "name": "bob"}]}, {"id": 456, "job": "teacher", "who":[{"user": "jim_user", "name": "jim"}]}]
target_id = 123
result = []

# 遍历列表找到匹配id的条目
for item in list1:
    if item["id"] == target_id:
        # 直接添加id字段
        result.append({"id": item["id"]})
        # 遍历who列表,提取name字段
        for who_item in item["who"]:
            result.append({"name": who_item["name"]})
        # 找到目标后立即退出循环,避免无效遍历
        break

print(result)

优化点:

  • 砍掉多余嵌套:原代码有4层循环嵌套,优化后最多2层,逻辑一目了然
  • 直接取值代替遍历判断:原代码循环who里的所有键再判断是否是name,现在直接通过键名取值,效率更高
  • 提前终止循环:找到目标条目后用break跳出,不用遍历剩余无关条目
  • 变量命名更直观:把items、values这类模糊命名改成item、who_item,可读性提升

优化方案2:用内置函数进一步简化代码

list1 = [{"id": 123, "job": "nurse", "who":[{"user": "bob_user", "name": "bob"}]}, {"id": 456, "job": "teacher", "who":[{"user": "jim_user", "name": "jim"}]}]
target_id = 123

# 用next()快速定位第一个匹配的条目,找不到则返回None
target_item = next((item for item in list1 if item["id"] == target_id), None)
result = []
if target_item:
    result.append({"id": target_item["id"]})
    # 用列表推导式批量生成name字典,再用extend()添加到结果
    result.extend([{"name": who["name"]} for who in target_item["who"]])

print(result)

优化点:

  • 用next()替代循环找目标:更简洁地获取第一个匹配条目,省去手动写break的步骤
  • 列表推导式+extend:批量处理who列表中的name字段,代码更紧凑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:53:12