我正在尝试从https://mtgjson.com/json/AllCards.json解析一些JSON数据,但是我不确定如何处理其结构化方式。这是我的代码段:
cards = json.loads(open("AllCards.json", encoding="utf8").read())
for card in cards:
print(card)
我期望“ card”是一个字典,然后可以用来访问属性,例如“ card ['name']”。但是,在这种情况下,所有“卡”都是包含键值的字符串,因此我无法使用它来访问任何嵌套属性。但是,如果我打印“卡片”,它将输出包括所有嵌套属性的整个JSON文档。
我还尝试使用卡[0]访问它们,但这给了我一个关键错误。
我在这里显然缺少了一些东西,但我不知道是什么。
答案 0 :(得分:2)
默认情况下,迭代字典将迭代其键。
如果您还想要这些值,则应迭代dict.items()
:
import json
cards = json.loads(open("AllCards.json", encoding="utf8").read())
for key, value in cards.items():
print(key, value)
value
将包含子命令。
与
相同import json
cards = json.loads(open("AllCards.json", encoding="utf8").read())
for key in cards:
print(key, cards[key])
如果您不关心键,则可以直接迭代值:
import json
cards = json.loads(open("AllCards.json", encoding="utf8").read())
for card in cards.values():
print(card)