首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速迭代元组列表

快速迭代元组列表
EN

Stack Overflow用户
提问于 2013-04-16 01:50:04
回答 5查看 135.5K关注 0票数 52

我想知道是否有一种更快、更少耗时的方法来迭代元组列表,找到正确的匹配。我所做的是:

代码语言:javascript
复制
# 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

此代码可能需要相当长的时间才能执行,具体取决于列表中的项数。我相信有更好的方法可以做到这一点。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-16 01:55:02

假设更多的内存使用不是问题,并且如果元组的第一项是hashable,那么您可以从元组列表中创建一个dict,然后查找该值就像从dict中查找一个键一样简单。类似于:

代码语言:javascript
复制
dct = dict(tuples)
val = dct.get(key) # None if item not found else the corresponding value

编辑:要创建反向映射,请使用如下命令:

代码语言:javascript
复制
revDct = dict((val, key) for (key, val) in tuples)
票数 28
EN

Stack Overflow用户

发布于 2013-04-16 01:51:24

我认为你可以使用

代码语言:javascript
复制
for j,k in my_list:
  [ ... stuff ... ]
票数 69
EN

Stack Overflow用户

发布于 2017-05-12 23:05:29

这个问题已经解决了,但仍然知道多一种方法并不会有什么坏处:

代码语言:javascript
复制
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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16021571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档