我有這個 json 檔案:
[
{ "results":
{ "points":
[
{ "name" : "s1" } ,
{ "name" : "s2" } ,
{ "name" : "j1" } ,
{ "name" : "n1" }
]
}
}
]
這個python代碼來閱讀它:
import json
with open('test.json') as json_file:
data = json.load(json_file)
json_file.close()
for i in len(data[0]["results"]["points"]):
print(data[0]["results"]["points"][i]["name"],': ')
len 陳述句失敗了。這是我應該使用的,還是別的什么?
uj5u.com熱心網友回復:
在 python 中,您通常不會根據索引來考慮您的回圈。但是你直接回圈你的專案
import json
from pathlib import Path
data = json.loads(Path("test.json").read_text())
for point in data[0]["results"]["points"] :
print(point)
如果您仍然想要索引使用 enumerate()
for n, point in enumerate(data[0]["results"]["points"]) :
print(n, point)
順便說一句,如果您使用背景關系管理器with,則不需要顯式關閉檔案,這就是背景關系管理器為您所做的。
uj5u.com熱心網友回復:
你得到的錯誤:
TypeError Traceback (most recent call last)
Input In [8], in <cell line: 1>()
----> 1 for i in len(data[0]["results"]["points"]):
2 print(data[0]["results"]["points"][i]["name"],': ')
TypeError: 'int' object is not iterable
告訴你,for i in X在X這種情況下,int 是不可迭代的。試試這個,你會得到同樣的錯誤:for i in 4. 解決方法是將len()短語括在range():
for i in range(len(data[0]["results"]["points"])):
print(data[0]["results"]["points"][i]["name"],': ')
該代碼有效,但很混亂。一個更干凈、更 Pythonic 的版本是:
for point in data[0]["results"]["points"]:
print(point["name"], ":")
產生相同的輸出。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/516863.html
