Python将列表中逗号分隔的单词替换为字典值(如果字典键中存在)

2024-04-28 20:14:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python的初学者。3) 并希望将单词替换到相应的词典中关键字:value if存在。例如,我有一个逗号分隔的列表

unfiltered = ['Cat,Dog,Cow','','Horse,Whale','Fish,Giant Elephant']

我想把“Whale”改成“Big Whale”,把“Fish”改成“水母”,就像这本字典:

word_to_change = {'Whale': 'Big Whale', 'Fish': 'Jellyfish'}

要得到这样的结果:

['Cat,Dog,Cow','','Horse,Big Whale','Jellyfish,Giant Elephant']

我可以组合“未筛选”列表中的所有元素,并使用字典值进行筛选:

unfiltered_combine = ['Cat','Dog','Cow','','Horse','Whale','Fish','Giant Elephant']

[x if x not in word_to_change else word_to_change[x] for x in lists]

筛选组合词时的结果:

['Cat', 'Dog', 'Cow', '', 'Horse', 'Big Whale', 'Jellyfish', 'Giant Elephant']

但是,我希望保持列表“未过滤”,而不合并其元素。有没有办法将“未过滤”列表过滤到“单词到更改”字典关键:价值?如果你能给我一些建议,我将不胜感激。你知道吗


Tags: to列表字典changecatworddogbig
2条回答
unfiltered = ['Cat,Dog,Cow','','Horse,Whale','Fish,Giant Elephant']
word_to_change = {'Whale': 'Big Whale', 'Fish': 'Jellyfish'}

for key, value in word_to_change.items():
    unfiltered = [w.replace(key, value) for w in unfiltered]

输出:

['Cat,Dog,Cow', '', 'Horse,Big Whale', 'Jellyfish,Giant Elephant']

编辑:仅当新值不在初始列表中时才能正常工作。你知道吗

您可以告诉我们以下理解:

unfiltered = ['Cat,Dog,Cow', '', 'Horse,Whale', 'Fish,Giant Elephant']
wtc = {'Whale': 'Big Whale', 'Fish': 'Jellyfish'}

result = [','.join(wtc.get(s, s) for s in e.split(',')) for e in unfiltered]
# ['Cat,Dog,Cow', '', 'Horse,Big Whale', 'Jellyfish,Giant Elephant']

这利用了^{}方法。您将^{}列表元素、应用转换和^{}标记重新组合在一起。你知道吗

相关问题 更多 >