我有一個非常復雜的嵌套字典(源自 JSON 檔案)。它看起來像這樣:
samplenumber_list = [226, 240, 554, 663, 324, 665, 398]
x = {'context first ': 'the energy levels are below zero',
'count': 4,
'value':
[{'id': 424, 'CompletedOn': '2018-06-28T00:00:00 02:00', 'EnteredValue': '0.5', 'EnteredOn': '2018-06-28T00:00:00 02:00', 'TextValue': '0.5', 'Test': {'Specs': 'Failed', 'TestType': {'Name': 'Energy zero'}, 'Sample': {'sample number': 226}}, 'Type': {'Name': 'Energt zero'}, 'Unit': None},
{'id': 425, 'CompletedOn': '2018-06-28T00:00:00 02:00', 'EnteredValue': 'spot', 'EnteredOn': '2018-10-01T16:35:01.173 02:00', 'TextValue': '30', 'Test': {'Specs': 'Failed', 'TestType': {'Name': 'Energy two'}, 'Sample': {'sample number': 226}}, 'Type': {'Name': 'Energy Two'}, 'Unit': None},
{'id': 661, 'CompletedOn': '2018-01-10T00:00:00 01:00', 'EnteredValue': '75', 'EnteredOn': '2018-01-10T00:00:00 01:00', 'TextValue': '75', 'Test': {'Specs': 'Failed', 'TestType': {'Name': "Visuality 040"}, 'Sample': {'sample number': 239}}, 'Type': {'Name': "Visuality 040"}, 'Unit': None},
{'id': 673, 'CompletedOn': '2018-01-10T00:00:00 01:00', 'EnteredValue': '0', 'EnteredOn': '2018-01-10T00:00:00 01:00', 'TextValue': '0', 'Test': {'Specs': 'Passed', 'TestType': {'Name': 'scanning version'}, 'Sample': {'sample number': 240}}, 'Type': {'Name': 'Unrecorded'}, 'Unit': None}],
'context second': 'the energy levels are still below zero'}
現在我想x過濾是否sample number在samplenumber_list .
這是我的代碼:
for value in x['value']['sample']['sample number']:
if value in samplenumber_list:
print('create the filtered dictionary')
這是我想要的輸出
x = {'context first ': 'the energy levels are below zero',
'count': 4,
'value':
[{'id': 424, 'CompletedOn': '2018-06-28T00:00:00 02:00', 'EnteredValue': '0.5', 'EnteredOn': '2018-06-28T00:00:00 02:00', 'TextValue': '0.5', 'Test': {'Specs': 'Failed', 'TestType': {'Name': 'Energy zero'}, 'Sample': {'sample number': 226}}, 'Type': {'Name': 'Energt zero'}, 'Unit': None},
{'id': 425, 'CompletedOn': '2018-06-28T00:00:00 02:00', 'EnteredValue': 'spot', 'EnteredOn': '2018-10-01T16:35:01.173 02:00', 'TextValue': '30', 'Test': {'Specs': 'Failed', 'TestType': {'Name': 'Energy two'}, 'Sample': {'sample number': 226}}, 'Type': {'Name': 'Energy Two'}, 'Unit': None},
{'id': 673, 'CompletedOn': '2018-01-10T00:00:00 01:00', 'EnteredValue': '0', 'EnteredOn': '2018-01-10T00:00:00 01:00', 'TextValue': '0', 'Test': {'Specs': 'Passed', 'TestType': {'Name': 'scanning version'}, 'Sample': {'sample number': 240}}, 'Type': {'Name': 'Unrecorded'}, 'Unit': None}],
'context second': 'the energy levels are still below zero'}
uj5u.com熱心網友回復:
您可以使用串列理解來做到這一點:
x['value'] = [i for i in x['value'] if i['Test']['Sample']['sample number'] in samplenumber_list]
uj5u.com熱心網友回復:
一種方法是使用串列理解,如下所示:
x["value"] = [xi for xi in x["value"] if xi["Test"]["Sample"]["sample number"] in sample_number_list]
print(x)
輸出
{'context first ': 'the energy levels are below zero',
'context second': 'the energy levels are still below zero',
'count': 4,
'value': [{'CompletedOn': '2018-06-28T00:00:00 02:00',
'EnteredOn': '2018-06-28T00:00:00 02:00',
'EnteredValue': '0.5',
'Test': {'Sample': {'sample number': 226},
'Specs': 'Failed',
'TestType': {'Name': 'Energy zero'}},
'TextValue': '0.5',
'Type': {'Name': 'Energt zero'},
'Unit': None,
'id': 424},
{'CompletedOn': '2018-06-28T00:00:00 02:00',
'EnteredOn': '2018-10-01T16:35:01.173 02:00',
'EnteredValue': 'spot',
'Test': {'Sample': {'sample number': 226},
'Specs': 'Failed',
'TestType': {'Name': 'Energy two'}},
'TextValue': '30',
'Type': {'Name': 'Energy Two'},
'Unit': None,
'id': 425},
{'CompletedOn': '2018-01-10T00:00:00 01:00',
'EnteredOn': '2018-01-10T00:00:00 01:00',
'EnteredValue': '0',
'Test': {'Sample': {'sample number': 240},
'Specs': 'Passed',
'TestType': {'Name': 'scanning version'}},
'TextValue': '0',
'Type': {'Name': 'Unrecorded'},
'Unit': None,
'id': 673}]}
或者,將問題中的代碼更改為:
res = []
for xi in x["value"]:
if xi["Test"]["Sample"]["sample number"] in sample_number_list:
res.append(xi)
x["value"] = res
您可以在檔案中找到有關回圈技術的更多資訊。
uj5u.com熱心網友回復:
這是一種方式
samplenumber_list = [226, 240, 554, 663, 324, 665, 398]
x = {'context first ': 'the energy levels are below zero',
'count': 4,
'value':
[{'id': 424, 'CompletedOn': '2018-06-28T00:00:00 02:00', 'EnteredValue': '0.5',
'EnteredOn': '2018-06-28T00:00:00 02:00', 'TextValue': '0.5',
'Test': {'Specs': 'Failed', 'TestType': {'Name': 'Energy zero'}, 'Sample': {'sample number': 226}},
'Type': {'Name': 'Energt zero'}, 'Unit': None},
{'id': 425, 'CompletedOn': '2018-06-28T00:00:00 02:00', 'EnteredValue': 'spot',
'EnteredOn': '2018-10-01T16:35:01.173 02:00', 'TextValue': '30',
'Test': {'Specs': 'Failed', 'TestType': {'Name': 'Energy two'}, 'Sample': {'sample number': 226}},
'Type': {'Name': 'Energy Two'}, 'Unit': None},
{'id': 661, 'CompletedOn': '2018-01-10T00:00:00 01:00', 'EnteredValue': '75',
'EnteredOn': '2018-01-10T00:00:00 01:00', 'TextValue': '75',
'Test': {'Specs': 'Failed', 'TestType': {'Name': "Visuality 040"}, 'Sample': {'sample number': 239}},
'Type': {'Name': "Visuality 040"}, 'Unit': None},
{'id': 673, 'CompletedOn': '2018-01-10T00:00:00 01:00', 'EnteredValue': '0',
'EnteredOn': '2018-01-10T00:00:00 01:00', 'TextValue': '0',
'Test': {'Specs': 'Passed', 'TestType': {'Name': 'scanning version'}, 'Sample': {'sample number': 240}},
'Type': {'Name': 'Unrecorded'}, 'Unit': None}],
'context second': 'the energy levels are still below zero'}
for c in x["value"]:
# print(c["Test"]["Sample"]["sample number"])
if c["Test"]["Sample"]["sample number"] in samplenumber_list:
print(c)
給
{'id': 424, 'CompletedOn': '2018-06-28T00:00:00 02:00', 'EnteredValue': '0.5', 'EnteredOn': '2018-06-28T00:00:00 02:00', 'TextValue': '0.5', 'Test': {'Specs': 'Failed', 'TestType': {'Name': 'Energy zero'}, 'Sample': {'sample number': 226}}, 'Type': {'Name': 'Energt zero'}, 'Unit': None}
{'id': 425, 'CompletedOn': '2018-06-28T00:00:00 02:00', 'EnteredValue': 'spot', 'EnteredOn': '2018-10-01T16:35:01.173 02:00', 'TextValue': '30', 'Test': {'Specs': 'Failed', 'TestType': {'Name': 'Energy two'}, 'Sample': {'sample number': 226}}, 'Type': {'Name': 'Energy Two'}, 'Unit': None}
{'id': 673, 'CompletedOn': '2018-01-10T00:00:00 01:00', 'EnteredValue': '0', 'EnteredOn': '2018-01-10T00:00:00 01:00', 'TextValue': '0', 'Test': {'Specs': 'Passed', 'TestType': {'Name': 'scanning version'}, 'Sample': {'sample number': 240}}, 'Type': {'Name': 'Unrecorded'}, 'Unit': None}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/338840.html
