簡體   English   中英

查找字典值列表的交集

[英]Find intersection of dictionary values list

我有兩個具有相同鍵的字典,而值是變體:

a = {1: [1, 2, 3, 4, 5], 2: [6, 7, 8], 3: [1, 3, 5, 7, 9]}
b = {1: [2, 3, 4, 7], 2: [6, 7], 3: [1, 3, 15, 10]}

我試圖在相同的鍵下獲得交叉點。 我想要這個 output:

{1: [2, 3, 4], 2: [6, 7], 3: [1, 3]}

我試過這個命令:

dict(zip(a.keys() and b.keys(), a.values() and b.values()))
output: {1: [2, 3, 4, 7], 2: [6, 7], 3: [1, 3, 15, 10]}

但是,output 如下,這是錯誤的:

{1: [2, 3, 4, 7], 2: [6, 7], 3: [1, 3, 15, 10]}

我認為這很清楚。 如果不是,請要求澄清。

假設,

我有兩個具有相同鍵的字典

a = {1: [1, 2, 3, 4, 5], 2: [6, 7, 8], 3: [1, 3, 5, 7, 9]}
b = {1: [2, 3, 4, 7], 2: [6, 7], 3: [1, 3, 15, 10]}
c = {}

for key, val in a.items():
    c[key] = []
    for i in val:
        if i in b[key]:
            c[key].append(i)

print(c)

output 是:

{1: [2, 3, 4], 2: [6, 7], 3: [1, 3]}

如果你知道字典有相同的鍵,你可以這樣做

c = {}
for key, list_a, list_b in zip(a.keys(), a.values(), b.values()):
    c[key] = [value for value in list_a if value in list_b]

或者:

c = {}
for key, list_a, list_b in zip(a.keys(), a.values(), b.values()):
    c[key] = list(set(list_a).intersection(list_b))

如果您不確定它們是否具有相同的鍵,只需添加一個條件,例如

c = {}
for key_a, list_a, key_b, list_b in zip(a.keys(), a.values(), b.keys(), b.values()):
    if key_a == key_b:
        c[key_a] = [value for value in list_a if value in list_b]
c= {key:list(set(a[key]) & set(b[key])) for key in a}

說明:使用字典理解,我遍歷了“a”的每個鍵,並在字典“a”和“b”中創建與該鍵對應的值列表的交集

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM