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 todict(我的选择)
您的拼写错误:香蕉和瓜
result = [
next(name for code, name in MY_CHOICES if code == item)
for item in fruit_list
]