Сначала вы получаете список в item['items']
.Вам нужно решить, нужно ли вам сохранять все значения, доступные в этом списке, или нет.
Во-вторых, вы пытаетесь получить доступ к нескольким атрибутам в dict одновременно, но вы объединяете команды get
.Однако в коде делается попытка трактовать его как вложенный диктат, и он может столкнуться с ошибками типов данных.
В-третьих, на самом деле вам не нужно вводить get
, более чистая версия - просто использовать квадратскобочные обозначения.
Если вам нужно создать новый dict для каждого из элементов в списке item['items']
, решение будет выглядеть примерно так:
import json
s = '''
[
{
"Ls age": "201",
"items": [
{
"Link ID": "1.1.1.2",
"Link Type": "StubNet",
"Metric": "1",
"Data": "255.255.255.255",
"Priority": "Medium"
},
{
"Link ID": "1.1.1.4",
"Link Type": "P-2-P",
"Metric": "1",
"Data": "192.168.100.34"
},
{
"Link ID": "192.168.100.33",
"Link Type": "StubNet",
"Metric": "1",
"Data": "255.255.255.255",
"Priority": "Medium"
},
{
"Link ID": "1.1.1.1",
"Link Type": "P-2-P",
"Metric": "1",
"Data": "192.168.100.53"
}
],
"Len": "84",
"Ls id": "1.1.1.2",
"Adv rtr": "1.1.1.2",
"Type": "Router",
"Link count": "5"
},
{
"Ls age": "1699",
"seq#": "80008d72",
"items": [
{
"Link ID": "1.1.1.1",
"Link Type": "StubNet",
"Metric": "1",
"Data": "255.255.255.255",
"Priority": "Medium"
},
{
"Link ID": "1.1.1.1",
"Link Type": "StubNet",
"Metric": "12",
"Data": "255.255.255.255",
"Priority": "Medium"
},
{
"Link ID": "1.1.1.3",
"Link Type": "P-2-P",
"Metric": "10",
"Data": "192.168.100.26"
},
{
"Link ID": "192.168.100.25",
"Link Type": "StubNet",
"Metric": "10",
"Data": "255.255.255.255",
"Priority": "Medium"
},
{
"Link ID": "1.1.1.2",
"Link Type": "P-2-P",
"Metric": "10",
"Data": "192.168.100.54"
},
{
"Link ID": "192.168.100.53",
"Link Type": "StubNet",
"Metric": "10",
"Data": "255.255.255.255",
"Priority": "Medium"
}
],
"Len": "96",
"Ls id": "1.1.1.1",
"chksum": "0x16fc",
"Adv rtr": "1.1.1.1",
"Type": "Router",
"Options": "ASBR E",
"Link count": "6"
}
]
'''
input_lst = json.loads(s)
myresult=[]
for item in input_lst:
mydict={}
mydict_sID = item['Ls id']
mydict_type = item['Type']
temp = []
for x in item['items']:
mydict={'Ls id': mydict_sID,
'Type': mydict_type,
'Link ID': x['Link ID'],
'Metric': x['Metric'],
'Link Type': x['Link Type']
}
temp.append(mydict)
myresult.extend(temp)
Убедитесь, что вы изменилистроки кода, которые я использовал для чтения строки при необходимости.