[英]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.