[英]Removing nested keys in Python dictionary
我有一本字典,看起来像这样:
data = {'a1': {'version': '1',
'results': {'key':'value'}
},
'a2': {'version': '1',
'results': {'key':'value'}
}
}
我需要摆脱关键的“版本”,并获得如下输出:
{'a1': {'results': {'key':'value'}},
'a2': {'results': {'key':'value'}},
...
我得到了代码:
data2 = {}
for k, v in data:
if k == 'version':
data2[k] = None
但是,这将返回一个空字典。
什么是实现这一目标的合适代码?
data = {'a1': {'version': '1',
'results': {'key':'value'}
},
'a2': {'version': '1',
'results': {'key':'value'}
}
}
for inner_dict_key in data:
if 'version' in data[inner_dict_key]:
del data[inner_dict_key]['version']
结果:
{'a1': {'results': {'key': 'value'}}, 'a2': {'results': {'key': 'value'}}}
Python 3:
data2 = {k: {'results': v['results']} for k, v in data.items()}
Python 2:
更换items
与iteritems
说明:
.items()
为我们提供了对(键,值)对的迭代器
您可以通过嵌套的dict理解来做到这一点
data2 = {k: {k: v for k, v in v.items() if k != 'version'} for k, v in data.items()}
如果您对k和v的范围感到困惑,则可以从内部dict标记它们
data2 = {k: {k1: v1 for k1, v1 in v.items() if k1 != 'version'} for k, v in data.items()}
从内涵作出新的类型的字典,防止意外的副作用,以dict
为使用的答案看出del
这工作:
data2 = data.copy()
for k in data:
if 'version' in data[k]:
del data2[k]['version']
print(data2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.