Извлечение данных из словаря в 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'])

Другие вопросы по тегам