详细说明
sample_dict = {"key1" : {"key2" : "value_of_interest}}
现在我希望能够进行以下调用
val = sample_dict.recursive_get("key2", None)
我可以想到很多这会很有用的情况。例如,从以 JSON 形式出现的 api 响应中获取键值对。
而且我知道编写这样的函数并不难,但我的问题是 - 为什么它还没有包含在内?
如果它导致糟糕的设计,请提供一些例子。
最佳答案
假设,正如一些评论者指出的那样,指向您的“感兴趣的值(value)”的键在嵌套层次结构中出现多次:
sample_dict = {'key1': {'key1': 'value_of_interest'}}
val = sample_dict.recursive_get('key1', None)
val
的值是多少?内部字典? 'value_of_interest'
? 应该是什么?哪个答案违反了 principle of least astonishment ?
像这样的 dict 怎么样?
sample_dict = {
'key1': [
{'key1': 'value_of_interest'},
{'key2': 'less_interesting_value'},
],
}
递归是否应该在每个级别检查可能的 list
或数组?像这样的字典并不少见,尤其是当由 JSON 形成时。
关键是那里有很多不同的字典,它们可以用很多不同的方式嵌套。 Python 非常精良,可以相当优雅地处理所有这些问题。不过,我想不出 recursive_get
的定义。
关于python - 在 Python 中,为什么没有在嵌套字典中查找键的内置函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35344744/