【问题标题】:How to get to a dict key from a list?如何从列表中获取字典键?
【发布时间】:2022-12-07 15:15:57
【问题描述】:

可以说我有以下字典结构和键列表。

d = {
    'a': {
        'b': {
            'c': 'value'
        }
    }
}
keyList = ['a', 'b', 'c']

以动态方式引用 c 键值的 pythonic 方法是什么?以静态方式我会说类似d[a][b][c] 但是如果我的 keyList 是动态的并且我需要在运行时引用该值有没有办法做到这一点? keyList 的 len 是可变的。

主要问题是我真的不知道要搜索什么。我尝试了动态字典路径之类的东西,但无法远程关闭任何东西

【问题讨论】:

    标签: python list dictionary


    【解决方案1】:
    d = {
        'a': {
            'b': {
                'c': 'value'
            }
        }
    }
    
    key_list = ['a', 'b', 'c']
    
    # Use the `get` method to traverse the dictionary and get the value at the specified path
    value = d
    for key in key_list:
        value = value.get(key, {}) # suggested by @sahasrara62
    
    # Print the value
    print(value)  # Output: 'value'
    

    【讨论】:

    • 使用value.get(key, {}),如果找不到密钥,则默认为{}
    • 好的。似乎工作谢谢。所以除了遍历键之外没有其他方法可以做到这一点。
    • 鉴于您最初的问题,这可能是更好的方法之一。
    【解决方案2】:

    您可以使用 functools.reduce 将输入字典作为起始值,将 dict.get 作为归约函数:

    from functools import reduce
    
    print(reduce(dict.get, keyList, d))
    

    这输出:

    value
    

    演示:https://replit.com/@blhsing/QuintessentialAntiqueMath

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      相关资源
      最近更新 更多