Python 3.x 从嵌套的Dict中查找值
我做的不正确,但我得到了嵌套dict列表的数据,我需要提取值并存储在输出dict中。 数据: 喜欢将Python 3.x 从嵌套的Dict中查找值,python-3.x,dictionary,Python 3.x,Dictionary,我做的不正确,但我得到了嵌套dict列表的数据,我需要提取值并存储在输出dict中。 数据: 喜欢将sequenceNumber,text值输入到Dict中输出结果 这是我得到的代码,但不起作用,如何修复它 def parse_data(data): rules = {} acllist = [] for k, v in data[0].items(): for h, j in k['result'].items(): for i
sequenceNumber
,text
值输入到Dict中输出结果
这是我得到的代码,但不起作用,如何修复它
def parse_data(data):
rules = {}
acllist = []
for k, v in data[0].items():
for h, j in k['result'].items():
for i in h['aclList'][0]:
for l in i[0]['sequence']:
rules['NUM'] = int(j['sequenceNumber'])
rules['TEXT_RULES'] = j['text']
acllist.append(rules.copy())
print (j['sequenceNumber'], j['text'])
return acllist
我假设这些列表中可以有多个元素。如果没有,您可以简化为
for dct in data[0]['result']['aclList'][0]['sequence']:
rules['NUM'] = int(dct['sequenceNumber'])
rules['TEXT_RULES'] = dct['text']
acllist.append(rules.copy())
print (inner['sequenceNumber'], dct['text'])
但是,如果您希望遍历每个列表并收集每个版本的元素,它看起来更像这样:
def parse_data(data):
acllist = []
# for each dict in the initial list
for dct in data:
# for each list in the ['aclList'] key of the ['result'] key
for lst in dct['result']['aclList']:
# for each inner dict in the ['sequence'] key
for inner in lst['sequence']:
rules = {}
rules['NUM'] = int(inner['sequenceNumber'])
rules['TEXT_RULES'] = inner['text']
acllist.append(rules.copy())
print (inner['sequenceNumber'], inner['text'])
return acllist
data =[{
"encoding":"json",
"result": {
"aclList":[
{
"chipName":"",
"countersEnabled":True,
"countersIncomplete":False,
"dynamic":False,
"name":"FW-RULE-IN",
"readonly":False,
"sequence":[
{
"convertSymbols":True,
"sequenceNumber":1,
"text":"TEST: RULE 1"
},
{
"convertSymbols":True,
"sequenceNumber":2,
"text":"TEST: RULE 2"
},
{
"convertSymbols":True,
"sequenceNumber":3,
"text":"TEST: RULE 3"
},]}]}}]
print(parse_data(data))
您出错的地方是您正在迭代您的dict
s的键/值
for k, v in data[0].items():
k
此处将包含“编码”
和“结果”
。
然后,您尝试遍历这些键
for h, j in k['result'].items():
但实际上你在这里做的是说:
k = "result"
for h, j in k['result'].items():
或:
您可以看到为什么这会抛出错误
k = "result"
for h, j in k['result'].items():
for h, j in "result"['result'].items():