簡體   English   中英

如何使用字典中的值替換列表中的部分值?

[英]How to replace part of the values in the list using the values from the dictionary?

以下方法只能替換一個值:

my_list = ['apple', 'pear', 'grape', 'banana', 'kiwi', 'plum']
my_list = list(map(lambda x: x.replace('apple','strawberry'), my_list))
print(my_list)

['strawberry', 'pear', 'grape', 'banana', 'kiwi', 'plum']

我想嘗試添加字典而不是一對值(“舊”,“新”):

my_list = list(map(lambda x: x.replace({'apple':'strawberry', 'banana':'raspberry'}), my_list))

但是出現錯誤信息:“replace() takes at least 2 arguments (1 given)”

你可以這樣做,

d = {"apple": "strawberry", "banana": "raspberry"}
out = list(map(lambda x: d.get(x, x), my_list))

# Output
# ['strawberry', 'pear', 'grape', 'raspberry', 'kiwi', 'plum']

由於 replace 正在返回一個字符串,您可以再次調用它,試試這個:

my_list = ['apple', 'pear', 'grape', 'banana', 'kiwi', 'plum']
my_list = list(map(lambda x: x.replace('apple','strawberry').replace("banana", "raspberry"), my_list))
print(my_list)

如果你有很多鍵值對,你可能想使用functools.reduce

from functools import reduce
replacements = ('apple','strawberry'), ("banana", "raspberry")
my_list = [reduce(lambda a, kv: a.replace(*kv), replacements, x) for x in my_list]
print(my_list)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM