【发布时间】:2016-12-13 04:33:40
【问题描述】:
我有以下元组列表:
list1 = [('the', 'a'), ('over','1'), ('quick','b'),('fox', 'c'), ('brown', 'd'), ('dog','e'), ('jumps','2')]
我正在尝试替换一些元组如下(*):
('the', 'a') -> ('the', 'ART')
('quick','b') -> ('quick','VERB')
('fox', 'c') -> ('fox', 'ANIMAL')
换句话说,list1 的元组应该这样替换:
list1 = [('the', 'ART'), ('over','1'), ('quick','VERB'),('fox', 'ANIMAL'), ('brown', 'd'), ('dog','e'), ('jumps','2')]
所以,我尝试了以下功能:
def replace_val(alist, key, value):
return [(k,v) if (k != key) else (key, value) for (k, v) in alist]
问题是我不能在一个动作中传递来自 (*) 的所有新元组,我必须这样做:
replace_val(list1, 'the', 'ART')
replace_val(list1, 'quick', 'VERB')
replace_val(list1, 'fox', 'ANIMAL')
因此,我的问题是:如何在一个动作中有效地替换 (*) 中的所有新元组以便得到?:
[('the', 'ART'), ('over','1'), ('quick','VERB'),('fox', 'ANIMAL'), ('brown', 'd'), ('dog','e'), ('jumps','2')]
【问题讨论】:
-
如果您的键相同,您可以使用字典而不是元组列表
标签: python python-3.x data-structures tuples itertools