如何在Python中按name值索引JSON数据?
按name值查找JSON列表中的字典
你完全可以通过属性值定位目标字典,这比固定索引可靠得多,推荐两种Pythonic的写法:
1. 单次查找用生成器表达式 + next()
先拿到处理后的分类列表:
import json # 完成初始索引处理得到分类列表 categories = json.loads(response.text)[...][...] # 查找第一个name为'foo_baz'的字典 target = next(item for item in categories if item['name'] == 'foo_baz')
如果担心找不到匹配项抛出StopIteration异常,可以给next()加默认值,找不到时返回None:
target = next((item for item in categories if item['name'] == 'foo_baz'), None)
2. 多次查找转成字典映射
如果需要频繁按name查找,先把列表转成以name为键的字典,后续查找效率更高:
category_map = {item['name']: item for item in categories} target = category_map.get('foo_baz') # 找不到返回None
⚠️ 注意:如果列表中有多个name相同的字典,转成字典时后面的项会覆盖前面的,需要确认你的数据中name是唯一的。
这种基于内容属性的查找方式,完全不受列表元素新增、顺序变化的影响,比固定索引和try-except写法更简洁可靠。
内容的提问来源于stack exchange,提问作者bismo
相关产品推荐
相关产品推荐

