如何使用元组访问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
相关产品推荐
相关产品推荐

