[英]Getting values from JSON file
我試圖從計數中獲取值並添加它們以查找總和。 我寫的代碼是:
import json
data= '''
{
"note":" sample data ",
"comments":
[
{
"School":"UCLA",
"count":97
},
{
"School":"MIT",
"count":97
},
{
"School":"Rutgers",
"count":90
}
]
}'''
number=list()
a=0
b=0
info = json.loads (data)
print json.dumps(info, indent=4)
for i in info:
number= i["comments"][0]["count"]
for n in number:
a=float(n)
b+=a
print b
當我執行此操作時,我得到的輸出是:
Traceback (most recent call last):
File "testty.py", line 28, in <module>
number= i["comments"][0]["count"]
TypeError: string indices must be integers
有人可以告訴我我做錯了什么以及如何解決它。
謝謝
你應該循環遍歷info["comments"]
這是一個列表。 您還可以使用sum
函數來累計值
b = sum(float(i["count"]) for i in info["comments"])
這個:
for i in info:
迭代dict,產生鍵,這是鍵。 直接訪問info
。
這是python列表理解:
tt = sum([float(row['count']) for row in info['comments']])
print tt
或者這是“for”循環
tt = []
for row in info['comments']:
tt.append(float(row['count']))
b = sum(tt)
print b
列表理解通常更快......
你的代碼:
data= '''
[{
"note":" sample data ",
"comments":
[
{
"School":"UCLA",
"count":97
},
{
"School":"MIT",
"count":97
},
{
"School":"Rutgers",
"count":90
}
]
}]'''
使用上面的數據作為數據,你的代碼應該工作......你缺少打開'['和關閉']'...
頂級JSON對象不是數組,因此不應對其進行迭代。 數組在info["comments"]
,所以也是
for i in info["comments"]:
a = float(i["count"])
b += a
print b
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.