簡體   English   中英

從JSON文件獲取值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM