Python中如何将JSON列表转换为可按名称访问的字典
问题
我正在使用Python,拥有一个存储为列表的JSON块json_player,内容如下:
[ { "id": "name", "value": "john" }, { "id": "sport", "value": "baseball" }, { "id": "age", "value": "20" } ]
该JSON块由以下代码生成:
json_object = json.loads(df['customFields']) json_player = json_object['player']
目前我可以通过json_player[0]['value']获取对应的值(如返回john),但希望能按名称而非索引访问键值对,以此避免JSON顺序变化带来的影响,例如通过类似player_dict['name']的方式直接得到john,请问该如何实现?
解决方案
方法一:字典推导式直接转换
最直接的方式是用字典推导式把原列表转换成以id为键、value为值的字典,这样就能通过名称直接访问:
# 将列表转换为字典 player_dict = {item['id']: item['value'] for item in json_player} # 按名称访问示例 print(player_dict['name']) # 输出: john print(player_dict['sport']) # 输出: baseball print(player_dict['age']) # 输出: 20
方法二:封装成辅助函数(适合频繁转换场景)
如果需要多次处理这类结构的列表,可以封装一个简单函数,方便复用:
def list_to_id_dict(data_list): return {item['id']: item['value'] for item in data_list} # 使用函数转换 player_dict = list_to_id_dict(json_player)
注意事项
- 若原列表中存在重复的
id,后面的条目会覆盖前面的,因此要确保id的唯一性 - 转换后的字典是独立于原列表的静态结构,如果原
json_player后续有修改,需要重新执行转换操作
内容的提问来源于stack exchange,提问作者DJC
相关产品推荐
相关产品推荐

