我想知道是否有更快,更省时的方法来迭代元组列表,找到正确的匹配.我所做的是:
# this is a very long list.
my_list = [ (old1, new1), (old2, new2), (old3, new3), ... (oldN, newN)]
# go through entire list and look for match
for j in my_list:
if j[0] == VALUE:
PAIR_FOUND = True
MATCHING_VALUE = j[1]
break
Run Code Online (Sandbox Code Playgroud)
此代码可能需要相当长的时间才能执行,具体取决于列表中的项目数.我相信有更好的方法可以做到这一点.
Eri*_*ric 57
我认为你可以使用
for j,k in my_list:
[ ... stuff ... ]
Run Code Online (Sandbox Code Playgroud)
San*_*rma 23
假设更多的内存使用不是问题,如果你的元组的第一项是可以清除的,你可以从元组列表中创建一个字典,然后查找该值就像从中查找键一样简单dict.就像是:
dct = dict(tuples)
val = dct.get(key) # None if item not found else the corresponding value
Run Code Online (Sandbox Code Playgroud)
编辑:要创建反向映射,请使用以下内容:
revDct = dict((val, key) for (key, val) in tuples)
Run Code Online (Sandbox Code Playgroud)
这个问题已经死了,但仍然知道另一种方法不会有什么坏处:
my_list = [ (old1, new1), (old2, new2), (old3, new3), ... (oldN, newN)]
for first,*args in my_list:
if first == Value:
PAIR_FOUND = True
MATCHING_VALUE = args
break
Run Code Online (Sandbox Code Playgroud)