我想知道是否有一种更快、更少耗时的方法来迭代元组列表,找到正确的匹配。我所做的是:
# 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此代码可能需要相当长的时间才能执行,具体取决于列表中的项数。我相信有更好的方法可以做到这一点。
发布于 2013-04-16 01:55:02
假设更多的内存使用不是问题,并且如果元组的第一项是hashable,那么您可以从元组列表中创建一个dict,然后查找该值就像从dict中查找一个键一样简单。类似于:
dct = dict(tuples)
val = dct.get(key) # None if item not found else the corresponding value编辑:要创建反向映射,请使用如下命令:
revDct = dict((val, key) for (key, val) in tuples)发布于 2013-04-16 01:51:24
我认为你可以使用
for j,k in my_list:
[ ... stuff ... ]发布于 2017-05-12 23:05:29
这个问题已经解决了,但仍然知道多一种方法并不会有什么坏处:
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
breakhttps://stackoverflow.com/questions/16021571
复制相似问题