我有一个包含字典的列表,例如
[{'x': 42}, {'x': 23, 'y': 5}]
并希望确保所有字典具有相同的键,其值为None
如果原始字典中不存在该密钥。所以上面的列表应该变成
[{'x': 42, 'y': None}, {'x': 23, 'y': 5}]
最美丽、最Python式的方法是什么?目前的方法:
keys = reduce(lambda k, l: k.union(set(l)), [d.keys() for d in my_list], set())
new_list = [dict.fromkeys(keys, None) for i in xrange(len(my_list))]
for i, l in enumerate(my_list):
new_list[i].update(l)
但尤其是前两行似乎有点笨拙。有想法吗?
>>> from itertools import chain
>>> l = [{'x': 42}, {'x': 23, 'y': 5}]
>>> all_keys = set(chain.from_iterable(l))
>>> for d in l:
d.update((k,None) for k in all_keys-d.viewkeys())
>>> l
[{'y': None, 'x': 42}, {'y': 5, 'x': 23}]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)