如果list-element = dict-key,如何用字典中的值替换python列表中的元素?

问题描述 投票:0回答:3

输入:

[yellow, red, green,  blue]

{green:go, yellow:attention, red:stay}

如何制作新列表:

[attention, stay, go, blue]

有没有办法用 lambda 来实现?

python list dictionary lambda matching
3个回答
6
投票

列表理解中使用

dict.get:

lst = ["yellow", "red", "green",  "blue"]
dic = {"green":"go", "yellow":"attention", "red":"stay"}
res = [dic.get(e, e) for e in lst]
print(res)

输出

['attention', 'stay', 'go', 'blue']

2
投票

我能想到的使用 lambda 的唯一方法是使用

map
dict.get
:

l = ['yellow', 'red', 'green',  'blue']
d = {'green': 'go', 'yellow': 'attention', 'red': 'stay'}
out = map(lambda x: d.get(x, x), l)
print(list(out))

结果

['attention', 'stay', 'go', 'blue']

0
投票

单行字 |简单的解决方案

l1 = ['yellow', 'red', 'green',  'blue']
dict1 = {'green':'go', 'yellow':'attention', 'red':'stay'}

方法一:使用 Lambda 映射函数

list(map(lambda x: dict1.get(x, x), l1))

输出:

['attention', 'stay', 'go', 'blue']

方法2:列表理解

[dict1.get(x, x) for x in l1]

输出:

['attention', 'stay', 'go', 'blue']

方法3:使用Dictionary get()和map()

[*map(dict1.get, l1, l1)]

输出:

['attention', 'stay', 'go', 'blue']
© www.soinside.com 2019 - 2024. All rights reserved.