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

如何在包含花括号结构的列表中搜索指定ID字段值

结构说明

你当前处理的是Python中的字典列表结构:外层方括号包裹的是列表,列表内每个花括号包裹的元素是存储键值对的字典,要查找指定ID对应的条目,直接遍历列表匹配每个字典内的id字段即可。

常用实现方法
  • 查找第一个匹配目标ID的条目
    假设你要查找的目标ID为MjEyYTIxNDhjZjM5ZTQ4IDU3ODQ4NzUgMWRhMzI2ZmRlZjdkYzM2,可直接通过循环遍历实现:
# 原始数据赋值
location_list = [{'address': '9 Lee Road, Wirral, Merseyside',
  'url': '/get/ODQ2MjhhNTg1Y2E1YzE2IDE3MDkxMzc2IDFkYTMyNmZkZWY3ZGMzNg==',
  'id': 'ODQ2MjhhNTg1Y2E1YzE2IDE3MDkxMzc2IDFkYTMyNmZkZWY3ZGMzNg=='},
 {'address': '9 Lee Road, Aylesbury, Buckinghamshire',
  'url': '/get/MTEwZDgzMGUxMDBlMWQyIDIyMDI5NjA1IDFkYTMyNmZkZWY3ZGMzNg==',
  'id': 'MTEwZDgzMGUxMDBlMWQyIDIyMDI5NjA1IDFkYTMyNmZkZWY3ZGMzNg=='},
 {'address': '9 Lee Road, London',
  'url': '/get/MjEyYTIxNDhjZjM5ZTQ4IDU3ODQ4NzUgMWRhMzI2ZmRlZjdkYzM2',
  'id': 'MjEyYTIxNDhjZjM5ZTQ4IDU3ODQ4NzUgMWRhMzI2ZmRlZjdkYzM2'},
 {'address': '9 Lee Road, Manchester',
  'url': '/get/MmNkNDQzN2I2ODc3NmVhIDMwMTUwOTg3IDFkYTMyNmZkZWY3ZGMzNg==',
  'id': 'MmNkNDQzN2I2ODc3NmVhIDMwMTUwOTg3IDFkYTMyNmZkZWY3ZGMzNg=='},
 {'address': '9 Lee Road, Aldeburgh, Suffolk',
  'url': '/get/N2YzZGJiMTQ5OGRlYjg3IDIyOTczNDM5IDFkYTMyNmZkZWY3ZGMzNg==',
  'id': 'N2YzZGJiMTQ5OGRlYjg3IDIyOTczNDM5IDFkYTMyNmZkZWY3ZGMzNg=='},
 {'address': '9 Lee Road, Chesterfield, Derbyshire',
  'url': '/get/MWI5MGFhNDY5MjcwNDUwIDcxMjg0MjggMWRhMzI2ZmRlZjdkYzM2',
  'id': 'MWI5MGFhNDY5MjcwNDUwIDcxMjg0MjggMWRhMzI2ZmRlZjdkYzM2'}]

target_id = "MjEyYTIxNDhjZjM5ZTQ4IDU3ODQ4NzUgMWRhMzI2ZmRlZjdkYzM2"
result = None
for item in location_list:
    if item["id"] == target_id:
        result = item
        break

print(result)
# 输出:{'address': '9 Lee Road, London', 'url': '/get/MjEyYTIxNDhjZjM5ZTQ4IDU3ODQ4NzUgMWRhMzI2ZmRlZjdkYzM2', 'id': 'MjEyYTIxNDhjZjM5ZTQ4IDU3ODQ4NzUgMWRhMzI2ZmRlZjdkYzM2'}

遍历完成后如果result仍为None,说明列表中没有对应ID的条目,可根据业务需求做后续处理。

如果追求代码简洁,也可以用生成器表达式实现同样的逻辑:

# 第二个参数None为找不到匹配项时的默认返回值,避免抛出StopIteration异常
result = next((item for item in location_list if item["id"] == target_id), None)
  • 查找所有匹配目标ID的条目
    如果列表中可能存在多个同ID的条目,用列表推导式即可取出全部匹配结果:
target_id = "ODQ2MjhhNTg1Y2E1YzE2IDE3MDkxMzc2IDFkYTMyNmZkZWY3ZGMzNg=="
all_matched = [item for item in location_list if item["id"] == target_id]
注意事项
  • 访问字典字段时使用item["字段名"]格式,字段名需要和数据中的键完全匹配,拼写、大小写错误都会触发KeyError。
  • 如果你不确定某条字典里是否存在id键,可以用item.get("id")取值,键不存在时会默认返回None,不会直接抛出错误中断程序。
  • 如果需要频繁执行ID查找操作,建议先把原始列表转换为以ID为键的字典,后续查找的时间复杂度可以从O(n)降到O(1),数据量大时性能提升非常明显,转换代码如下:
id_map = {item["id"]: item for item in location_list}
# 后续查找直接按键取值即可
result = id_map.get(target_id)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:27:16