首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python:如何使用元组元组作为查找

Python:如何使用元组元组作为查找
EN

Stack Overflow用户
提问于 2018-07-04 03:55:47
回答 3查看 143关注 0票数 -1

假设我有一个元组,如下所示:

代码语言:javascript
复制
MY_CHOICES = (
    ('AB', 'APPLE BANANNA'),   
    ('O', 'ORANGE'),    
    ('W', 'WATERMELLON'),    
    ('SB', 'STRAWBERRY BANANNA'),  
    ('CM', 'CHERRY MELLON'),    
)

我如何使用它作为查找并循环遍历列表,如下所示:

代码语言:javascript
复制
fruit_list = ['AB','SB','CM']

要做到这一点:

代码语言:javascript
复制
['APPLE BANANNA','STRAWBERRY BANANNA','CHERRY MELLON']

这就是我正在尝试的:

代码语言:javascript
复制
    fruit_list_final = []

    for fruit in fruit_list:
        fruit_list_final.append( MY_CHOICES[fruit] )

    print fruit_list_final

但是我收到一个错误:unicode TypeError:元组索引必须是整数,而不是

EN

回答 3

Stack Overflow用户

发布于 2018-07-04 03:56:32

将其转换为字典。

示例:

代码语言:javascript
复制
MY_CHOICES_DICT = dict(MY_CHOICES)
result = [MY_CHOICES_DICT[fruit] for fruit in fruit_list]
print(result)

结果是:

代码语言:javascript
复制
['APPLE BANANNA', 'STRAWBERRY BANANNA', 'CHERRY MELLON']
票数 2
EN

Stack Overflow用户

发布于 2018-07-04 04:04:43

还有另一种方式:

代码语言:javascript
复制
result = [
    next(name for code, name in MY_CHOICES if code == item)
    for item in fruit_list
]

这不会构建中间字典,而是迭代每个结果的数组。如果列表很小,可能会产生更好的性能。如果列表很长,情况肯定会更糟。

请注意,缺少水果将导致引发StopIteration异常。

票数 1
EN

Stack Overflow用户

发布于 2018-07-04 04:04:35

您可以使用

代码语言:javascript
复制
MY_CHOICES = (
    ('AB', 'APPLE BANANA'),   
    ('O', 'ORANGE'),    
    ('W', 'WATERMELON'),    
    ('SB', 'STRAWBERRY BANANA'),  
    ('CM', 'CHERRY MELON'),    
)

print(next(value for key, value in MY_CHOICES
           if key == 'W'))

将打印:

代码语言:javascript
复制
WATERMELON
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51162027

复制
相关文章

相似问题

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