Python 合并和求和字典
给定上述字典,如何将这些值相加并合并到一个字典中,如下所示Python 合并和求和字典,python,dictionary,Python,Dictionary,给定上述字典,如何将这些值相加并合并到一个字典中,如下所示 {'A':{'x':1,'y':1,'z':0},'B':{'x':0,'y':0,'z':0}添加以下代码: b = {'A':{'x':0,'y':1,'z':0}, 'B':{'x':0,'y':0,'z':0}} 您可以使用: 这仅适用于已发布的示例。 对于更一般的想法,您只有1s和0s可供使用: >>> import pandas as pd >>> a = {'A':{'x':1,'y'
{'A':{'x':1,'y':1,'z':0},'B':{'x':0,'y':0,'z':0}
添加以下代码:
b = {'A':{'x':0,'y':1,'z':0}, 'B':{'x':0,'y':0,'z':0}}
您可以使用:
这仅适用于已发布的示例。
对于更一般的想法,您只有1
s和0
s可供使用:
>>> import pandas as pd
>>> a = {'A':{'x':1,'y':0,'z':0}, 'B':{'x':0,'y':0,'z':0}}
>>> b = {'A':{'x':0,'y':1,'z':0}, 'B':{'x':0,'y':0,'z':0}}
>>> (pd.DataFrame(a) + pd.DataFrame(b)).to_dict()
{'A': {'x': 1, 'y': 1, 'z': 0}, 'B': {'x': 0, 'y': 0, 'z': 0}}
或
对于未导入库的内容:
>>> (pd.DataFrame(a) | pd.DataFrame(b)).to_dict()
{'A': {'x': 1, 'y': 1, 'z': 0}, 'B': {'x': 0, 'y': 0, 'z': 0}}
使用
collections.defaultdict
和计数器
:
>>> {out_k:{k:(a[out_k][k] or b[out_k][k]) for k in a[out_k]} for out_k in a}
{'A': {'x': 1, 'y': 1, 'z': 0}, 'B': {'x': 0, 'y': 0, 'z': 0}}
输出:
from collections import defaultdict, Counter
d = defaultdict(Counter)
for dic in [a,b]:
for k, v in dic.items():
d[k].update(v)
将您的尝试作为一个共享是一个好主意,可以避免此操作被关闭。谢谢。你的值只有0和1吗?这实际上并不是按要求求和。
>>> (pd.DataFrame(a) | pd.DataFrame(b)).to_dict()
{'A': {'x': 1, 'y': 1, 'z': 0}, 'B': {'x': 0, 'y': 0, 'z': 0}}
>>> {out_k:{k:(a[out_k][k] or b[out_k][k]) for k in a[out_k]} for out_k in a}
{'A': {'x': 1, 'y': 1, 'z': 0}, 'B': {'x': 0, 'y': 0, 'z': 0}}
from collections import defaultdict, Counter
d = defaultdict(Counter)
for dic in [a,b]:
for k, v in dic.items():
d[k].update(v)
defaultdict(collections.Counter,
{'A': Counter({'x': 1, 'y': 1, 'z': 0}),
'B': Counter({'x': 0, 'y': 0, 'z': 0})})