说我有一个元组,例如:
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
但是我遇到一个错误: TypeError:元组索引必须是整数,而不是unicode
答案 0 :(得分:2)
将其转换为字典。
示例:
MY_CHOICES_DICT = dict(MY_CHOICES)
result = [MY_CHOICES_DICT[fruit] for fruit in fruit_list]
print(result)
结果是:
['APPLE BANANNA', 'STRAWBERRY BANANNA', 'CHERRY MELLON']
答案 1 :(得分:1)
另一种方式:
result = [
next(name for code, name in MY_CHOICES if code == item)
for item in fruit_list
]
这不会建立中间词典,但是会为每个水果迭代数组。如果列表较小,则可能会产生更好的性能。如果清单很长,那肯定会更糟。
请注意,缺少水果会引发StopIteration
异常。
答案 2 :(得分:0)
您可以使用next
:
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'))
将打印:
WATERMELON