Alrigt,假设我有这两个词典:
A = {(3,'x'):-2, (6,'y'):3, (8, 'b'):9}
B = {(3,'y'):4, (6,'y'):6}
Run Code Online (Sandbox Code Playgroud)
我想把它们加在一起,这样我得到一个类似于这个的字典:
C = {(3,'x'):-2,(3,'y'):4, (6,'y'):9, (8, 'b'):9}
Run Code Online (Sandbox Code Playgroud)
我试过做一个理解,为任何长度的dicts做这个.但对新手来说似乎有点困难.我处在这样的水平,我尝试这样的东西,例如:
编辑:
>>> {k:A[k]+B[d] for k in A for d in B}
{(6, 'y'): 7, (3, 'x'): 2, (8, 'b'): 13}
Run Code Online (Sandbox Code Playgroud)
由于某些原因,我得到了这么多,但它遗漏了(3,'y'):4
jte*_*ace 11
我会使用collections.Counter:
>>> A = {(3,'x'):-2, (6,'y'):3, (8, 'b'):9}
>>> B = {(3,'y'):4, (6,'y'):6}
>>> import collections
>>> C = collections.Counter(A)
>>> C.update(B)
>>> dict(C)
{(3, 'y'): 4, (8, 'b'): 9, (3, 'x'): -2, (6, 'y'): 9}
Run Code Online (Sandbox Code Playgroud)
由于您使用的是Python 3,因此一种可能的方法是:
>>> A = {(3,'x'):-2, (6,'y'):3, (8, 'b'):9}
>>> B = {(3,'y'):4, (6,'y'):6}
>>> {k: A.get(k,0) + B.get(k,0) for k in A.keys() | B.keys()}
{(8, 'b'): 9, (3, 'x'): -2, (6, 'y'): 9, (3, 'y'): 4}
Run Code Online (Sandbox Code Playgroud)
在Python 3中,.keys()返回一个dict_keys对象,我们可以使用|运算符来获取两者的并集.(这就是为什么A.keys() + B.keys()不起作用.)
(我可能会使用Counter自己,FWIW.)
| 归档时间: |
|
| 查看次数: |
2932 次 |
| 最近记录: |