【发布时间】:2022-01-19 11:53:45
【问题描述】:
我有一个 JSON 文件,它是多个字典的元组,我想从其中的一些字典中提取键和值。
文件看起来像这样(这只是随机键和值的结构示例):
file =
[
{
"element": {
"name": "Ana",
"bio": "xx",
"type": "female"
},
"ID": "1234",
"status": "STOPPED"
},
{
"element": {
"name": "Bob",
"bio": "xy",
"type": "male"
},
"ID": "5678",
"status": "STOPPED"
},
{
"element": {
"name": "Chloe",
"bio": "xx",
"type": "female"
},
"ID": "8912",
"status": "STOPPED"
}
]
我想提取的所有名字(Ana、Bob、Chloe)和他们的 id 是这样的:
安娜 = 1234,
鲍勃 = 5678
等等
无论我已经尝试过什么,都会返回属性错误等。我什至不确定如何正确地遍历它,以便使用 name 和 ID,因为它们没有相同的位置(@987654324 @ 在 element 字典中)。
我什至尝试将文件转换为列表。
【问题讨论】:
-
好的,所以我们可以假设,在您完成所有 JSON 加载工作之后,您的程序中有一个变量
file,它的值与您运行 Python 代码时的值相同以上?你验证了吗?如果您没有这样的结果,那么您需要确保您了解如何解析 JSON 数据。如果你这样做了,那么你使用它的方式与它来自其他任何地方的方式完全相同。例如:在顶层,它是一个列表,对吗? 你如何获得列表的第一个元素?当你拥有那个元素时,根据它的结构,你将如何获得名称和 ID? -
“我已经尝试过的任何东西都会返回属性错误等。”我们只能告诉您您实际向我们展示的代码有什么问题,并且我们只能解释我们自己可以实际看到的错误消息。
-
感谢您的回复。我有 json 文件,我使用 open(file.json) 作为文件并处于读取模式(所以'r')并将其转换为列表。所以可以说:lst = list(file) 之后我想尝试使用 get 所以:list_element = lst.get('element'),这就是我出错的地方。 ``` with open('file.json', 'r') as file: lst = list(file) element = lst.get('element') id = lst.get('ID') for i in range ( len(element)): name = element[0].get('ID') ```
-
那不解析 JSON 数据。当你读取文件时,你只是得到一个字符串,其中
{和[等符号没有没有特殊含义。将其转换为列表仅意味着每个符号都成为列表的一个元素。您应该使用搜索引擎来学习如何解析 JSON。 -
我知道负载是如何存在的......但我不确定如何正确使用它,因为它是字典中的字典。这就是为什么我在这里提出问题,以找出答案并学习它。由于我未能在您提到的搜索引擎上找到它。但是,我感谢您的努力并花时间回答并指出我犯的错误,认为此处必须以不同的方式使用负载。谢谢!
标签: python json python-3.x dictionary tuples