Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 合并和求和字典_Python_Dictionary - Fatal编程技术网

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})})