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

如何在JSON文件中根据Key查找对应对象的位置?

如何在JSON文件中根据Key查找对应对象的位置?

我想在JSON文件中根据Key查找对应对象的位置,但尝试使用collection模块后发现,即便数据是字典格式,该模块也无法处理JSON文件中的数据。

reda.json 文件内容:

[{"carl": "33"}, {"break": "55"}, {"user": "heake"}]

尝试的第一段代码:

import json
import collections

json_data = json.load(open('reda.json'))
if type(json_data) is dict:
    json_data = [json_data]

d = collections.OrderedDict((json_data))
h = tuple(d.keys()).index('break')
print(h)

尝试的第二段代码及结果:

j = 'break'
for i in json_data:
    if j in i:
      print(j.index('break'))

运行结果:0


正确解法:

你的JSON文件解析后得到的是多个字典组成的列表,不需要用到collections模块,直接遍历列表并跟踪索引即可找到目标Key所在对象的位置。

示例代码:

import json

# 安全加载JSON数据
with open('reda.json', 'r') as f:
    json_data = json.load(f)

target_key = 'break'
# 用enumerate同时获取索引和元素
for idx, item in enumerate(json_data):
    if target_key in item:
        print(f"Key '{target_key}' 所在对象的位置索引是: {idx}")
        break
else:
    print(f"未找到Key '{target_key}'")

代码说明:

  • with open会自动关闭文件,避免资源泄漏
  • enumerate(json_data)可以同时拿到每个字典在列表中的索引idx和字典本身item
  • 找到目标Key后立即输出索引并终止循环;遍历完未找到则输出提示

之前代码出错的原因:

  1. 第一段代码:试图把整个字典列表转成OrderedDict,但OrderedDict需要键值对序列作为参数,直接传入列表会报错
  2. 第二段代码:j.index('break')是取字符串'break'内部字符的索引('b'在字符串里的位置是0),不是该字典在列表中的位置,所以结果不符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:10:22