簡體   English   中英

比較2個字典列表中值的[1:]元素的最快方法

[英]Fastest way to Compare the [1:] elements of a value in 2 dict of lists

我有以下兩個龐大的詞典:

Dic1={0:['F','15','O+','5'],1:['M','12','O+'],2:[F,'20','O-'],3:['F','10','A+'],4:['M','45','?']...}

Dic2={0:['M','15','O+','5'],1:['M','12','O+'],2:[F,'20','A-'],3:['F','10','A+'],4:['F','15','?'],5:['M','10','A+']...}

我需要比較兩者以找到兩個字典中相同的V [1:],將它們組合在一個字典中並從另一個字典中刪除該值。

新Dic1:

Dic1={0:['F,M','15','O+','5'],1:['2M','12','O+'],2:[F,'20','O-'],3:['2F,M','10','A+'],4:['M','45','?']...}

新Dic2:

Dic2={2:[F,'20','A-'],4:['F','15','?'],...}

我到目前為止的想法是:

for ((key1, value1), (key2, value2)) in zip(Dic1.items(),  Dic2.items()):
 if value1[1:]==value2[1:]:
     value1.append(value2[:1])     
     del Dic1[Value2]

但我有問題,因為字典非常大,我需要一個節省時間的方法,我想到了設置,但我不知道如何使用它。

以下應該會產生預期的結果:

Dic1={0:['F','15','O+','5'],1:['M','12','O+'],2:['F','20','O-'],3:['F','10','A+'],4:['M','45','?']}
Dic2={0:['M','15','O+','5'],1:['M','12','O+'],2:['F','20','A-'],3:['F','10','A+'],4:['F','15','?'],5:['M','10','A+']}

for i in Dic1.keys():
    if Dic1[i][1:] == Dic2[i][1:]:
        if Dic1[i][0] == Dic2[i][0]:
            Dic1[i][0] = '2' + Dic1[i][0]
        else:
            Dic1[i][0] += ',' + Dic2[i][0]
        Dic2.pop(i) 

print Dic1
print Dic2

以上產生:

{0:['F,M','15','O +','5'],1:['2M','12','O +'],2:['F','20', 'O-'],3:['2F','10','A +'],4:['M','45','?']}

{2:['F','20','A-'],4:['F','15','?'],5:['M','10','A +']}

暫無
暫無

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

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