Как исправить «список» объект не имеет атрибута «значения» при чтении файла JSON - PullRequest
0 голосов
/ 10 июля 2019
[{
    'original_block': '213.158.64.0/19',
    'transferred_blocks': '213.158.64.0/19',
    'from': 'REGISTER.IT S.P.A.',
    'to': 'REGISTER S.P.A.',
    'date': '01/07/2019',
    'transferType': 'MERGER_OR_ACQUISITION',
    }, {
    'original_block': '5.154.240.0/23',
    'transferred_blocks': '5.154.240.0/24',
    'from': 'NAV COMMUNICATIONS SRL',
    'to': 'uPress Inc',
    'date': '01/07/2019',
    'transferType': 'POLICY',
    }, {
    'original_block': '78.159.136.0/21',
    'transferred_blocks': '78.159.140.0/22',
    'from': 'Telecom Aset Ltd',
    'to': 'Aryaka Networks Inc.',
    'date': '01/07/2019',
    'transferType': 'POLICY',
    }, {
    'original_block': '81.88.48.0/20',
    'transferred_blocks': '81.88.48.0/20',
    'from': 'REGISTER.IT S.P.A.',
    'to': 'REGISTER S.P.A.',
    'date': '01/07/2019',
    'transferType': 'MERGER_OR_ACQUISITION',
    }]

У меня есть список IP-передач, которые я загрузил из файла JSON.Я хочу извлечь некоторые значения из файла JSON (словаря), но получаю 'list' object has no attribute 'values'.

import json

with open ('iplist.json','r') as t:

    d = json.load(t)

address = [item['original_block'] for d_ in d.values() for item in d_]

print(address)

Я получаю

'list' object has no attribute 'values'

Я ожидаю увидеть

address = ['213.158.64.0/19', '5.154.240.0/23', '78.159.136.0/21', '81.88.48.0/20']

1 Ответ

1 голос
/ 10 июля 2019

d - это список словарей, каждый из которых имеет клавишу original_block.

просто сделайте это:

d = [{'original_block': '213.158.64.0/19', 'transferred_blocks': '213.158.64.0/19', 'from': 'REGISTER.IT S.P.A.', 'to': 'REGISTER S.P.A.', 'date': '01/07/2019', 'transferType': 'MERGER_OR_ACQUISITION'}, {'original_block': '5.154.240.0/23', 'transferred_blocks': '5.154.240.0/24', 'from': 'NAV COMMUNICATIONS SRL', 'to': 'uPress Inc', 'date': '01/07/2019', 'transferType': 'POLICY'}, 
{'original_block': '78.159.136.0/21', 'transferred_blocks': '78.159.140.0/22', 'from': 'Telecom Aset Ltd', 'to': 'Aryaka Networks Inc.', 'date': '01/07/2019', 'transferType': 'POLICY'}, 
{'original_block': '81.88.48.0/20', 'transferred_blocks': '81.88.48.0/20', 'from': 'REGISTER.IT S.P.A.', 'to': 'REGISTER S.P.A.', 'date': '01/07/2019', 'transferType': 'MERGER_OR_ACQUISITION'}]

address = [item['original_block'] for item in d]

print(address)

Выход:

['213.158.64.0/19', '5.154.240.0/23', '78.159.136.0/21', '81.88.48.0/20']
...