我正在尝试从count中获取值并添加它们以查找总和。 我写的代码是:
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
有人可以告诉我我做错了什么以及如何解决。
由于
答案 0 :(得分:3)
你应该循环遍历info["comments"]
这是一个列表。您还可以使用sum
函数来累计值
b = sum(float(i["count"]) for i in info["comments"])
答案 1 :(得分:2)
此:
for i in info:
遍历dict,产生键,即字符串。直接访问info
。
答案 2 :(得分:2)
这是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
}
]
}]'''
使用上面的数据作为数据,你的代码应该有效...你缺少打开'['并关闭']'...
答案 3 :(得分:1)
顶级JSON对象不是数组,因此您不应该迭代它。数组在info["comments"]
,所以
for i in info["comments"]:
a = float(i["count"])
b += a
print b