簡體   English   中英

如何在一本字典中比較兩個不同的值(數組)?

[英]How can I compare two different values(array) in one dictionary?

我想比較字典中的兩個值(它們是列表),如果它們至少有一個公共元素,我將它們的鍵作為一個元組。 就我而言,(k1,k2)和(k2,k1)之間沒有區別。 我這樣做了。 但問題是我的數據很大,這種方式很慢!

paths = {0:[1,2,3,4],1:[2,5,6],3:[5,8,9],4:[1,3,4]}
edges = []
for k1,v1 in paths.items():
        for k2,v2 in paths.items():
            if not k1 == k2:
                if [value for value in v1 if value in v2] != []:
                        edges.append((k1,k2))

我的願望 output: [(0, 1), (0, 4), (1, 3)]

我從我的代碼中得到的 output: [(0, 1), (0, 4), (1, 0), (1, 3), (3, 1), (4, 0)]

使用itertools.combinations ,每次比較只進行一次:

    import itertools
    paths = {0:[1,2,3,4],1:[2,5,6],3:[5,8,9],4:[1,3,4]}
    edges = []
    for ktuple in itertools.combinations(paths,2):
        if [value for value in paths[ktuple[0]] if value in paths[ktuple[1]]] != []:
            edges.append(ktuple)

暫無
暫無

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

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