Python 3.x 从嵌套的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

我做的不正确,但我得到了嵌套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 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():