我目前正在處理大量的清單(〜280k清單)和較小的清單(~3.5k清單)。我試圖有效地比較小列表中的第一個索引與大列表中的第一個索引。如果它們匹配,我想要返回具有匹配的第一個索引的小列表和大列表中的兩個列表。有效比較列表中的兩個大列表的每個列表中的第一項?
例如:
大列表1:
[[a,b,c,d],[e,f,g,h],[i,j,k,l],[m,n,o,p]]
較小目錄2:
[[e,q,r,s],[a,t,w,s]]
將返回
[([e,q,r,s],[e,f,g,h]),([a,t,w,s],[a,b,c,d])]
我現在有它設置如下圖所示,其中al元組ist通過每個元組持有兩個具有匹配的第一個元素的列表返回。我很好,正在使用任何其他數據結構。我試圖使用一組元組,但遇到了問題,試圖找出如何更快地完成這項工作。
我的代碼比較列表這些兩個列表是目前這樣的:
match = []
for list_one in small_list:
for list_two in large_list:
if str(list_one[0]).lower() in str(list_two[0]).lower():
match.append((spm_values, cucm_values))
break
return match
當其中一個列表中有多個子列表以相同的值開始時會發生什麼?或者這是不可能的 –
在這種情況下不會發生 - 第一個元素是MAC地址。 – KoolAid
首先,'in'運算符不是檢查等式的正確方法,您應該使用'=='來達到這個目的。其次你爲什麼要把第一個項目轉換爲'str'? – Kasramvd