我正在寻找一种方法来使用一些常用键来插入两个词典。 如果两个词典中的键相同,则最终词典应包含两个词典中值的列表。
D1 = {'A':1,'B':2,'C':3,'D':4}
D2 = {'A':10,'B':20,'X':3}
交叉这两个应该给出:
{'A':[1,10], 'B':[2,20]}
交叉部分与
一起正常工作def intersect(D1,D2):
newD = {}
keys_D1 = set(D1.keys())
keys_D2 = set(D2.keys())
intersection = keys_D1 & keys_D2
for i in intersection:
newD[i] = D1.get(i)
//...(looking for a way to append the values from D1 & D2 not just D1)
return newD
newD = {'A':1,'B':2}
先谢谢!!
答案 0 :(得分:4)
你可以通过列表理解来完成这个;
>>> D1 = {'A':1,'B':2,'C':3,'D':4}
>>> D2 = {'A':10,'B':20,'X':3}
>>> {a:[b, c] for a, b in D1.items() for a1, c in D2.items() if a == a1}
{'B': [2, 20], 'A': [1, 10]}
>>>
答案 1 :(得分:2)
试试这个:
D1 = {'A':1,'B':2,'C':3,'D':4}
D2 = {'A':10,'B':20,'X':3}
newD = {}
for key in D1.keys():
try:
if(D2[key]):
newD[key] = [D1[key],D2[key]]
except KeyError:
continue
print newD
此致
答案 2 :(得分:1)
你快到了。后:
intersection = keys_D1 & keys_D2
你只需要字典理解:
{key: [D1[key], D2[key]] for key in intersection}
如果你想用你的循环来做:
for i in intersection:
newD[i] = [D1.get(i), D2.get(i)]
答案 3 :(得分:1)
D1 = {'A':1,'B':2,'C':3,'D':4}
D2 = {'A':10,'B':20,'X':3}
a_dict = {}
for key in D1:
if key in D2:
a_dict[key] = [D1[key], D2[key]]
a_dict
答案 4 :(得分:0)
这个怎么样:
D1 = {'A':1,'B':2,'C':3,'D':4}
D2 = {'A':10,'B':20,'X':3}
D3 = {i:[] for i in list(set(D1.keys()) & set(D2.keys()))}
for i in D3:
for j in [D1,D2]:
D3[i].append(j[i])