在不知道数组名称的情况下搜索json文件中的项

2024-09-30 18:13:47 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,我有一个包含json元素的文件,我们把它叫做json_file,这个文件包含

{
  "array1": {
    "item1": ["item0", "item1"],
    "item2": ["item0", "item1"]
  },
  "array2": {
    "item3": ["item0", "item1"],
    "item4": ["item0", "item1"]
  }
}

我正在尝试创建一个搜索函数,该函数将搜索arrays中的项目,但不指定哪个数组。 我试着这样做:

json_file = open("json.txt", "r")
data = json.load(json_file)

if "item1" in data:
   print("works")
else:
   print("doesn't work")

你可以猜到,我得到了doesn't work。我做错了什么


Tags: 文件函数json元素datafileworkprint
2条回答

使用python将json文件加载到对象中时,会得到与dict对象相同的结构,json文件中也包含所有层次结构

您将无法直接从对象的根访问“item1”,因为它是“array1”的子对象。因此,在这种特殊情况下,您可能需要:

# something before
if "item1" in data["array1"]:
# etc..

此外,您还可以将此对象转换为实际字典,如下所示:

data = dict(data)

并迭代如下所示的项目:

for key, value in data.items():
    for item_key, array_value in data[key]:
        # now you have each array in the "array_value" variable
        # do stuff...

可以使用dict.values()获取不带键的值

with open("json.txt", "r") as json_file:
    data = json.load(json_file)
    for value in data.values():
        if "item1" in data:
            print("works")
        else:
            print("doesn't work")
        # or do you want to search in the list?
        # for val in value.values():
        #     if "item1" in data:
        #         print("works")
        #     else:
        #         print("doesn't work")

还有一点,您可以直接在json文件中使用list

[
  [
    ["item0", "item1"],
    ["item0", "item1"]
  ],
  [
    ["item0", "item1"],
    ["item0", "item1"]
  ]
]

相关问题 更多 >