使用嵌套键查找字符串访问python dict
我正在寻找在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'}
这利用了以下事实:
k
字典中对关键字的查找d
可以写为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]]