【问题标题】:Search list of nested dicts for specific value [duplicate]搜索特定值的嵌套字典列表[重复]
【发布时间】:2020-11-27 00:32:40
【问题描述】:

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

【问题讨论】:

标签: python list dictionary nested


【解决方案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

【讨论】:

    【解决方案2】:
    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'}}]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-18
      • 2023-01-01
      • 2015-10-15
      • 2013-03-21
      • 2021-08-08
      • 2021-02-12
      • 2019-09-08
      • 1970-01-01
      相关资源
      最近更新 更多