我试图循环通过一个JSON文件来获得特定的值,但是,当这样做时,循环会打印三次。我只想打印一次值,并尝试打破循环,但仍然没有工作
Python代码:
with open(filename) as json_filez:
dataz = json.load(json_filez)
for i in dataz:
for i in dataz['killRelated']:
print(i["SteamID"])
break
我的json文件的一个片段是
{
"killRelated": [
{
"SteamID": "76561198283763531",
"kill": "15,302",
"shotacc": "16.1%"
}
],
"metaData": [
{
"test": "lol"
}
],
"miscData": [
{
"damageGiven": "2,262,638",
"gamePlayed": "1,292",
"moneyEarned": "50,787,000",
"score": "31,122",
"timePlayed": "22d 11h 56m"
}
]
}
这是我的输出:
76561198283763531
76561198283763531
76561198283763531
预期产出:
76561198283763531
来自
json.load
的返回是一个字典,您只对其中的一个条目感兴趣,由'killRelated'
键控。现在,针对每个字典条目的“值”是列表,因此这就是您需要迭代的内容。这样一个列表的每个元素都是一个字典,你可以通过一个键再次访问它因此,您的代码可以是:
现在,在示例数据中,
dataz['killRelated']
列表中只有一个条目,因此您只能打印该条目。但总的来说,你应该期望有多个条目——并且考虑到没有条目的可能性。您可以通过try/except通过检查密钥存在来处理该问题;这是后者:您得到了三行输出,因为您的外循环在
dataz
中的所有关键字条目上进行了迭代(尽管没有检查它们),然后在其中的每一次也在dataz['killRelated']
列表上进行了迭代。添加break
只会停止该内部循环,对于您拥有的特定数据,该内部循环是多余的,因为它只会打印一个条目你的代码是正确的。你应该检查你的json文件,或者你可以分享你的json全文。这将是一个问题。我使用您提供的json代码段运行您的代码,它按预期工作
结果如下:
相关问题 更多 >
编程相关推荐