我想比较2个列表中的条目:
例如:
for key in keys:
for elem in elements:
#Find a key in common with 2 lists and write the corresponding value
if key == elem:
do something
#Iterate through elements unit the current "key" value is found.
else:
pass
这种方法的问题在于它非常慢,有更快的方法吗?
*假设len(keys) > len(elements)
答案 0 :(得分:3)
使用sets,然后设置intersection将返回公共元素。
设置交集是O(min(len(s1), len(s2))
操作。
>>> s1 = range(10)
>>> s2 = range(5,20)
>>> set(s1) & set(s2) #set intersection returns the common keys
set([8, 9, 5, 6, 7]) # order not preserved
答案 1 :(得分:1)
将它们变成集合:
set1 = set(keys)
set2 = set(elements)
现在你可以找到他们的路口:
set1.intersection(set2)
这些集合不会保留顺序,因此您只需返回常用元素。