我希望在 python 中创建一个简单的嵌套“查找”机制,并希望确保在 python 的庞大库中的某处没有隐藏的东西在创建它之前还没有这样做。
我正在寻找格式如下的字典
my_dict = {
"root": {
"secondary": {
"user1": {
"name": "jim",
"age": 24
},
"user2": {
"name": "fred",
"age": 25
}
}
}
}
我正在尝试通过使用类似于
的十进制表示法来访问数据root.secondary.user2
并将生成的字典作为响应返回。我在想一定有什么东西可以做到这一点,我可以毫不费力地写一个,但我想确保我没有重新创建文档中可能遗漏的东西。谢谢
最佳答案
标准库中没有用于此目的的任何内容,但您自己编写代码相当容易:
>>> key = "root.secondary.user2"
>>> reduce(dict.get, key.split("."), my_dict)
{'age': 25, 'name': 'fred'}
这利用了这样一个事实,即在字典 d
中查找键 k
可以写成 dict.get(d, k)
。使用 reduce()
迭代地应用它会导致期望的结果。
编辑:为了完整起见,使用此方法获取、设置或删除字典键的三个函数:
def get_key(my_dict, key):
return reduce(dict.get, key.split("."), my_dict)
def set_key(my_dict, key, value):
key = key.split(".")
my_dict = reduce(dict.get, key[:-1], my_dict)
my_dict[key[-1]] = value
def del_key(my_dict, key):
key = key.split(".")
my_dict = reduce(dict.get, key[:-1], my_dict)
del my_dict[key[-1]]
关于python - 使用嵌套键查找字符串访问 python dict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9320335/