搜索嵌套字典的特定值列表

时间:2020-08-06 17:22:48

标签: python list dictionary nested

我有一个嵌套的字典列表,想找到包含某个值的字典,然后使用该字典来查找该字典中其他键的值。例如,我想在列表中搜索MP_REFERENCE'123456',以便可以保存包含此字符串的字典并在其中找到其他值(例如my_dict [“ OUTCOME_CODE”] [“ value”])

2 个答案:

答案 0 :(得分:1)

In [64]: LIST = [
    ...:             {
    ...:                 "RESPONSE_TYPE_CODE": {"value": "RNAGE"},
    ...:                 "OUTCOME_CODE": {"value": "ACCPT"},
    ...:                 "MP_REFERENCE": {"value": 338451},
    ...:                 "TRANSACTION_REFERENCE": {"value": "213527"},
    ...:                 "TRANSACTION_TYPE_CODE": {"value": "APPNT"},
    ...:                 "TRANSACTION_STATUS_CODE": {"value": "ACCPT"},
    ...:             },
    ...:             {
    ...:                 "RESPONSE_TYPE_CODE": {"value": "RNAGE"},
    ...:                 "OUTCOME_CODE": {"value": "ACCPT"},
    ...:                 "MP_REFERENCE": {"value": 519505},
    ...:                 "TRANSACTION_REFERENCE": {"value": "123456"},
    ...:                 "TRANSACTION_TYPE_CODE": {"value": "APPNT"},
    ...:                 "TRANSACTION_STATUS_CODE": {"value": "ACCPT"},
    ...:             },
    ...:             {
    ...:                 "RESPONSE_TYPE_CODE": {"value": "RNAGE"},
    ...:                 "OUTCOME_CODE": {"value": "REJCT"},
    ...:                 "MP_REFERENCE": {"value": 123456},
    ...:                 "TRANSACTION_REFERENCE": {"value": "475582"},
    ...:                 "TRANSACTION_TYPE_CODE": {"value": "DEAPP"},
    ...:                 "TRANSACTION_STATUS_CODE": {"value": "ACCPT"},
    ...:             }
    ...:  ]

In [63]: [d for d in LIST if d["MP_REFERENCE"]["value"] == 123456]
Out[63]:
[{'RESPONSE_TYPE_CODE': {'value': 'RNAGE'},
  'OUTCOME_CODE': {'value': 'REJCT'},
  'MP_REFERENCE': {'value': 123456},
  'TRANSACTION_REFERENCE': {'value': '475582'},
  'TRANSACTION_TYPE_CODE': {'value': 'DEAPP'},
  'TRANSACTION_STATUS_CODE': {'value': 'ACCPT'}}]

答案 1 :(得分:1)

以下是一些代码,它们通过“ LIST”进行迭代,并将具有要求的规范的dict保存到称为correct_dict的变量中。请注意,为简单起见,我将“ LIST”重命名为lst。

lst = [
            {
                "RESPONSE_TYPE_CODE": {"value": "RNAGE"},
                "OUTCOME_CODE": {"value": "ACCPT"},
                "MP_REFERENCE": {"value": 338451},
                "TRANSACTION_REFERENCE": {"value": "213527"},
                "TRANSACTION_TYPE_CODE": {"value": "APPNT"},
                "TRANSACTION_STATUS_CODE": {"value": "ACCPT"},
            },
            {
                "RESPONSE_TYPE_CODE": {"value": "RNAGE"},
                "OUTCOME_CODE": {"value": "ACCPT"},
                "MP_REFERENCE": {"value": 519505},
                "TRANSACTION_REFERENCE": {"value": "123456"},
                "TRANSACTION_TYPE_CODE": {"value": "APPNT"},
                "TRANSACTION_STATUS_CODE": {"value": "ACCPT"},
            },
            {
                "RESPONSE_TYPE_CODE": {"value": "RNAGE"},
                "OUTCOME_CODE": {"value": "REJCT"},
                "MP_REFERENCE": {"value": 123456},
                "TRANSACTION_REFERENCE": {"value": "475582"},
                "TRANSACTION_TYPE_CODE": {"value": "DEAPP"},
                "TRANSACTION_STATUS_CODE": {"value": "ACCPT"},
            }]

correct_dict = {}
for dic in lst:
    if dic["MP_REFERENCE"]["value"] == "123456":
        correct_dict = dic