我在Python中有一个带有某些元素的列表。我想用另一个列表中的相应元素替换这些元素。
我想要另一个与列表中的元素相关的列表,如:
x = ['red','orange','yellow','green','blue','purple','pink']
y = ['cherry','orange','banana','apple','blueberry','eggplant','grapefruit']
这样就可以使用y中相应的元素创建一个新的列表,其元素在x中。所以
r = ['green','red','purple']
将成为
r = ['apple','cherry','eggplant']
由于
答案 0 :(得分:2)
首先创建从一个列表到另一个列表的映射:
my_mapping = dict(zip(x, y))
zip
部分主要是形式:dict
期望参数是一对对的序列,而不是一对序列。
然后使用列表推导将此映射应用于r
的每个成员:
new_r = [my_mapping[elem] for elem in r]
答案 1 :(得分:1)
词典是最好的选择。它们是键值对的映射,因此如果我使用键索引字典,它将返回该键下的值。
让我们使用带有两个列表的zip
函数创建一个新词典:
mapper = dict(zip(x,y))
现在,如果我们想要将列表r更改为与新列表中的元素对应的列表:
r = [mapper[i] for i in r]
这将获取r中的每个元素并使用字典将其转换为对应元素。