繁体   English   中英

如何使用两个词典中的列表中的相同键来收集值

[英]How to collect values with the same keys in a list from the two dictionaries

我正在寻找一种方法来使用一些常用键来插入两个字典。 如果两个词典中的键相同,则最终词典应包含两个词典中的值列表

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}

提前致谢!!

你可以通过列表理解来做到这一点;

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

尝试这个:

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

问候

你快到了。 后:

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

这个怎么样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM