Python遍历嵌套字典列表 匹配指定address返回对应id方法
Python遍历字典列表筛选指定字段值的实现方案
你不需要硬编码列表索引来取值,直接遍历my_dict['result']列表的所有元素,逐个做字段值判断即可完成批量提取,下面提供两种常用实现方式:
方法1:基础for循环(逻辑直观,易调试)
逻辑拆分清晰,适合刚接触循环的开发者使用:
# 存储匹配到的id结果 target_ids = [] # 迭代result列表下的每一个条目 for entry in my_dict['result']: # 校验当前条目的address是否匹配目标值 if entry.get("address") == "0xd2": target_ids.append(entry.get("id")) # 打印结果 print(target_ids)
运行后输出:
['632', '315', '432']
说明:你给出的示例数据集中,id为
100的条目对应address值是0x44,不符合0xd2的匹配规则。如果需要同时匹配多个地址拿到四个id,把判断条件修改为if entry.get("address") in ("0xd2", "0x44"):即可,此时输出结果为['632', '315', '432', '100'],和你提到的预期结果一致。
方法2:列表推导式(简洁高效,Python推荐写法)
对于简单的筛选逻辑,用列表推导式可以用更少的代码实现相同效果:
# 单地址匹配 target_ids = [entry["id"] for entry in my_dict["result"] if entry["address"] == "0xd2"] # 多地址匹配(拿四个id的版本) # target_ids = [entry["id"] for entry in my_dict["result"] if entry["address"] in ("0xd2", "0x44")] print(target_ids)
注意事项
- 不要硬编码列表索引(比如你之前用的
[2])做批量处理,直接迭代列表本身可以自动适配任意长度的数据集 - 上面代码里用
dict.get()取值可以避免条目缺失对应字段时抛出KeyError,如果确定所有条目字段结构完整,直接用entry['address']的写法也可以 - 如果需要把id转成整数类型,在追加结果/推导的时候用
int(entry["id"])做类型转换即可
内容的提问来源于stack exchange,提问作者user6785032
相关产品推荐
相关产品推荐

