Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何使用元组的元组作为查找_Python_List_Tuples - Fatal编程技术网

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

Python:如何使用元组的元组作为查找,python,list,tuples,Python,List,Tuples,假设我有一个元组,如: MY_CHOICES = ( ('AB', 'APPLE BANANNA'), ('O', 'ORANGE'), ('W', 'WATERMELLON'), ('SB', 'STRAWBERRY BANANNA'), ('CM', 'CHERRY MELLON'), ) 如何将其用作查找和循环列表,如: fruit_list = ['AB','SB','CM'] 要做到这一点: ['APPLE

假设我有一个元组,如:

MY_CHOICES = (
    ('AB', 'APPLE BANANNA'),   
    ('O', 'ORANGE'),    
    ('W', 'WATERMELLON'),    
    ('SB', 'STRAWBERRY BANANNA'),  
    ('CM', 'CHERRY MELLON'),    
)
如何将其用作查找和循环列表,如:

fruit_list = ['AB','SB','CM']
要做到这一点:

['APPLE BANANNA','STRAWBERRY BANANNA','CHERRY MELLON']
这就是我正在尝试的:

    fruit_list_final = []

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

    print fruit_list_final

但是我得到了一个错误:类型错误:元组索引必须是整数,而不是unicode将其转换为dict

例如:

MY_CHOICES_DICT = dict(MY_CHOICES)
result = [MY_CHOICES_DICT[fruit] for fruit in fruit_list]
print(result)
结果是:

['APPLE BANANNA', 'STRAWBERRY BANANNA', 'CHERRY MELLON']
您可以使用:

将打印:

WATERMELON
还有另一种方式:

result = [
    next(name for code, name in MY_CHOICES if code == item)
    for item in fruit_list
]
这并不构建一个中介字典,而是迭代每个水果的数组。如果列表较小,则可能会产生更好的性能。如果名单很长,肯定会更糟


请注意,丢失的水果将导致引发
StopIteration
异常。

只需键入cast to
dict(我的选择)
您的拼写错误:香蕉和瓜
result = [
    next(name for code, name in MY_CHOICES if code == item)
    for item in fruit_list
]