为了账号安全,请及时绑定邮箱和手机立即绑定

在单个语句中替换列表中的多个字符串

在单个语句中替换列表中的多个字符串

烙印99 2021-11-23 16:59:47
我试图在一个语句中用两个不同的词替换此列表的第三个和第四个词,但似乎无法找到我尝试过的方法对错误不起作用AttributeError: 'list' object has no attribute 'replace':friends = ["Lola", "Loic", "Rene", "Will", "Seb"] friends.replace("Rene", "Jack").replace("Will", "Morris")
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

如果你想进行多次替换,最简单的方法可能是制作一个你想用什么替换的字典:

replacements = {"Rene": "Jack", "Will": "Morris"}

然后使用列表理解:

friends = [replacements[friend] if friend in replacements else friend for friend in friends]

或者更简洁,使用dict.get()默认值。

friends = [replacements.get(friend, friend) for friend in friends]


查看完整回答
反对 回复 2021-11-23
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

另一种方式,如果您不介意将列表转换为 a 的开销pandas.Series:


import pandas as pd


friends = ["Lola", "Loic", "Rene", "Will", "Seb"]


friends = pd.Series(friends).replace(to_replace={"Rene":"Jack", "Will":"Morris"}).tolist()

print(friends)

#['Lola', 'Loic', 'Jack', 'Morris', 'Seb']


查看完整回答
反对 回复 2021-11-23
?
狐的传说

TA贡献1804条经验 获得超3个赞

这是一个不太漂亮的解决方案,但仍然是一个单行:

friends = list(map(lambda x: x if x != "Will" else "Morris", map(lambda x: x if x != "Rene" else "Jack", friends)))

简要说明:

这是一个“map(lambda, list)”解决方案,其输出列表作为输入列表传递给另一个外部“map(lambda, list)”解决方案。

lambda在内部map是用于替换"Will"使用"Morris"

所述lambdamap是用于替换"Rene""Jack"


查看完整回答
反对 回复 2021-11-23
  • 3 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信