You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用元组访问Python中的嵌套字典?

如何用元组访问嵌套字典?

你可以通过以下几种方式实现用元组一次性访问嵌套字典的深层值:

方法1:自定义辅助函数

写一个遍历元组键的函数,逐层访问字典:

def get_nested_value(data, keys):
    current = data
    for key in keys:
        current = current[key]
    return current

# 使用示例
my_dict = {
        "1": { "a": "hi", "b": "bye" },
        "2": { "a": { "i": "howdy"}}
        }

print(get_nested_value(my_dict, ("1", "b")))  # 输出: bye
print(get_nested_value(my_dict, ("2", "a", "i")))  # 输出: howdy

方法2:用functools.reduce简化实现

借助reduce函数可以把逻辑压缩成一行:

from functools import reduce

def get_nested_value(data, keys):
    return reduce(lambda d, k: d[k], keys, data)

# 使用示例和方法1一致
print(get_nested_value(my_dict, ("1", "b")))  # 输出: bye

方法3:自定义字典类支持元组索引

如果想直接用my_dict[("1", "b")]这种原生语法,可以继承dict并重载__getitem__方法:

class TupleAccessibleDict(dict):
    def __getitem__(self, keys):
        if isinstance(keys, tuple):
            current = self
            for key in keys:
                current = current[key]
            return current
        # 非元组键时调用父类的索引逻辑
        return super().__getitem__(keys)

# 使用示例
my_dict = TupleAccessibleDict({
        "1": { "a": "hi", "b": "bye" },
        "2": { "a": { "i": "howdy"}}
        })

print(my_dict[("1", "b")])  # 输出: bye
print(my_dict[("2", "a", "i")])  # 输出: howdy
# 普通索引方式依然有效
print(my_dict["1"]["a"])  # 输出: hi

注意事项

  • 如果元组中的某个键不存在,或者中间层级不是可索引的字典结构,会抛出和常规字典访问一致的KeyError或TypeError。
  • 以上方法都支持任意深度的嵌套字典。

内容的提问来源于stack exchange,提问作者Al-Baraa El-Hag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 13:27:07