python - 在嵌套 Python 字典中搜索键
问题描述
我想在 Python dict 中搜索键值对。我的 dict 是嵌套的,如此简单的解决方案,例如:
if 'keyname' in my_dict:
...
或者:
for key, value in my_dict.items():
if 'keyname' == key:
对我不起作用。这是我的命令:
my_dict = {'a': 111,
'b': 222,
'c':{'d': 333,
'e': 444},
'f':555,
'g':{'h': {'i': 666}}}
我想找到'i'或'd'的值,最简单的方法是什么?我不关心嵌套字典的键的名称。例如,我不关心'c'或'g'或'h'的键名,我只关心键值(key-number)。有没有办法将我的 dict 转换为如下所示:
my_result = {'a': 111,
'b': 222,
'd': 333,
'e': 444,
'f': 555,
'i': 666}
这样就很容易了。
解决方案
您可以在此处使用递归来展平字典。
def flat(data):
out = {}
for k, v in data.items():
if isinstance(v, dict):
out.update(flat(v))
else:
out[k] = v
return out
flat(my_dict)
# {'a': 111, 'b': 222, 'd': 333, 'e': 444, 'f': 555, 'i': 666}
推荐阅读
- python - 使用单个值和元组的组合将字典映射到另一个字典
- matplotlib - seaborn 计数图中的色调传说 | 改变位置
- typescript - tsconfig 中是否有别名的简写?
- plotly - 轴顶视图布局
- node.js - 当 POST 请求成功注销用户并重定向到主页时,正确的状态代码是什么?
- c++ - C++ 复制构造函数导致内存错误
- css - 我可以隐藏吗
- c# - SyncFusion BoldReports ReportViewer 数据源有或没有以下两个:DataSourceReference 和 ConnectionProperties
- logstash - Logstash 配置基本身份验证过滤器未解析
- pycharm - PyCharm - 不支持的 Java 版本 - 严重的启动错误