【发布时间】:2012-05-15 23:34:07
【问题描述】:
我有一个像字典这样的列表
[{'x': 42}, {'x': 23, 'y': 5}]
并希望确保所有 dicts 具有相同的键,如果原始 dict 中不存在该键,则其值为 None。所以上面的列表应该变成
[{'x': 42, 'y': None}, {'x': 23, 'y': 5}]
什么是最漂亮和最pythonic的方式来做到这一点?目前的做法:
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)
但尤其是前两行似乎有点笨拙。想法?
【问题讨论】:
-
也许你应该使用命名元组而不是字典。
-
哪个字典是“原始的”?
-
我认为没有'original'
-
@Nkosinathi:将
defaultdict(lambda: None)用于您的原始字典可能会解决问题。
标签: list dictionary set python