#python #json #parsing #dictionary
#питон #json #синтаксический анализ #словарь
Вопрос:
Я хотел бы перечислить значение из ключа «name» только на основе значения «Username» из ключа «type» из локального файла json, хранящегося в переменной с именем result (используя json.load(input_file). Файл содержит другие словари, не связанные с именем пользователя, которые мне не нужны в моем результате.
{
"count": {
"references": {
"returned": 10,
"total": 17933
}
},
"entities": {
"KF4UXbl": {
"name": "johndoe123",
"type": "Username",
},
"KeirTr": {
"name": "#thash123",
"hits": 141581,
"type": "Hashtag",
},
"SQsD6o": {
"name": "goodie1234",
"type": "Username",
"modified": "2019-04-12T21:02:51.938Z"
},
"type:Speech": {
"name": "Other",
"type": "MetaType",
},
"QXyWAK": {
"name": "textuser1234",
"type": "Username",
},
"type:Topic": {
"name": "Topic",
"type": "MetaType",
},
"KeTJkZ": {
"name": "TestOrg",
"type": "Organization",
"meta_type": "type:Organization",
},
}
Код
for i, j in result.iteritems():
if j.get('type') == 'Username':
print j.get('name')
Однако я получаю эту ошибку:
if j.get('type') == 'Username':
AttributeError: 'list' object has no attribute 'get'
Как я могу распечатать приведенное ниже на основе значения Username?
johndoe123
goodie1234
textuser1234
Комментарии:
1. В чем ваш вопрос?
2. мой вопрос заключается в том, основываясь на приведенном выше json dict, как мне распечатать список имен из ключа ‘name’ на основе значения ‘Username’ из ключа ‘type’?
3. Если опубликованный вами словарь является именно тем, что
result
есть, тоresult
это вложенный словарь. Ключами верхнего уровня являются"count"
и"entities"
, которые оба указывают на значения, являющиеся их собственными словарями. Попробуйте заменитьresult.iteritems()
наresult.get("entities").iteritems()
в вашемfor
определении цикла. Это должно повторяться по той части структуры данных, которая вас интересует.