Извлечение данных из словаря в Python
У меня есть программа от доктора Чака, чтобы напечатать сумму отсчетов из этих данных. Проблема в. Счетчик JSON показывает "2", когда их много..
import json
import urllib
url="http://python-data.dr-chuck.net/comments_42.json"
uh = urllib.urlopen(url)
data = uh.read()
print 'Retrieved',len(data),'characters'
print data
info = json.loads(data)
print 'User count:', len(info)
Эта линия print 'User count:', len (info)
показывает вывод 2. Когда данных много, следовательно, я могу получить доступ только к 2 данным, а не к остальным.
Понятия не имею почему. Я могу решить часть подсчета суммы. Просто не понимаю, почему я получаю доступ только к первым двум данным, а остальная часть JSON игнорируется.
4 ответа
JSON имеет два свойства верхнего уровня: примечание и комментарии. Вот почему вы получаете длину 2.
Это, вероятно, даст вам то, что вы хотите:
len(info["comments"])
Итак, ваш JSON проанализировал, чтобы диктовать как
{"note":"bla", "comments":[...]}
Длина этого должна быть 2, потому что это только два ключа в этом dict. Правильный способ сделать ваше дело - это получить комментарии и подсчитать их.
Например:
len(data.get('comments',[]))
Для подсчета количества комментариев:
print 'User count:', len(info["comments"])
Чтобы напечатать общее "количество":
count = 0
for comment in info["comments"]:
count += comment["count"]
print 'Total count:', count
Json состоит из примечаний и комментариев. Внутри комментариев есть еще один массив объектов. если вы хотите получить доступ к этому массиву, вы должны использовать это info['comments']
а затем, если вы хотите, чтобы длина этого массива, как вы делаете, вы можете использовать len(info['comments'])