所以,我需要用matplotlib绘制一些东西,所有这些都是完美的,直到这个错误。基本上,我需要的是转变如下:
[
{
"foo":1,
"bar":2
},
{
"foo":8,
"baz":3
}
]
这样的事情:
[
{
"foo":1,
"bar":2,
"baz":0
},
{
"foo":8,
"baz":3,
"bar":0
}
]
有什么办法可以做到吗?
答案 0 :(得分:1)
一种方法是计算密钥的并集,然后通过for
循环进行迭代。
keys = set().union(*lst)
for d in lst:
for k in keys - d.keys():
d[k] = 0
print(lst)
[{'foo': 1, 'bar': 2, 'baz': 0},
{'foo': 8, 'baz': 3, 'bar': 0}]
答案 1 :(得分:0)
如果keys
是键列表,L
是字典列表,那么:
for d in L:
for k in keys:
d.setdefault(k, 0)
将每个缺失的密钥设置为0
。
答案 2 :(得分:0)
由于我们发布了答案......这是一种更简单的方法。只需将您的dicts转换为defaultdict
s,无论您在哪里定义它们。 - defaultdict(int, your_dictionary)
然后,无论不存在哪个键,您都可以访问此dict,因为如果它们不存在,则defaultdict将在此处返回0,如您所愿。没有必要在这里重新发明轮子。