【发布时间】:2016-08-08 15:01:12
【问题描述】:
我正在使用 Python 3.5.1
所以我想要做的是在一个字典中传递一个 点分隔的字符串,它代表一个键的路径和一个默认值。我想检查密钥是否存在,如果不存在,请提供默认值。这样做的问题是我想要访问的密钥可能嵌套在其他字典中,直到运行时我才会知道。所以我想做的是这样的:
def replace_key(the_dict, dict_key, default_value):
if dict_key not in the_dict:
the_dict[dict_key] = default_value
return the_dict
some_dict = {'top_property': {'first_nested': {'second_nested': 'the value'}}}
key_to_replace = 'top_property.first_nested.second_nested'
default_value = 'replaced'
#this would return as {'top_property': {'first_nested': {'second_nested': 'replaced'}}}
replace_key(some_dict, key_to_replace, default_value)
我正在寻找的是一种无需对 '.' 进行拆分即可执行此操作的方法。在字符串中并迭代可能的键,因为这可能会变得混乱。我宁愿不必使用第三方库。我觉得有一种干净的 Pythonic 方式可以做到这一点,但我就是找不到。我已经浏览了文档,但无济于事。如果有人对我如何做到这一点有任何建议,将不胜感激。谢谢!
【问题讨论】:
-
出于好奇,您为什么认为使用 split() 会变得一团糟?这是我首先想到的。
-
我也有同样的想法。如果点是分隔符,那么我看不出不使用
split('.')的原因。
标签: python python-3.x