从JSON文件获取值

时间:2016-05-27 00:38:35

标签: python json

我正在尝试从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

有人可以告诉我我做错了什么以及如何解决。

由于

4 个答案:

答案 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