如何从列表中删除重复项并保留单词大小写?

时间:2020-10-22 12:46:06

标签: python python-3.x

我想从下面的列表中删除重复项,同时保留大小写吗?

lst = ['AWS Certification', 'AWS certification', 'AWS Certified Solutions Architect']

我可以做类似的事情,

list(dict.fromkeys([item.casefold() for item in lst]))
# returns
['aws certification', 'aws certified solutions architect']

但这会小写所有我不需要的单词。

要查找任何一行代码吗?

3 个答案:

答案 0 :(得分:4)

您可以将casefold映射到原始值,然后将其拉出:

>>> list({i.casefold(): i for i in lst}.values())
['AWS certification', 'AWS Certified Solutions Architect']

这将保留原始列表中每个重复项的最后一个变体,因为每个新出现的事件都将覆盖字典中的上一个变量。

答案 1 :(得分:1)

您实际上可以创建dict对中的string : index,然后使用它来获取原始单词:

lst = ['AWS Certification', 'AWS certification', 'AWS Certified Solutions Architect']

res = [lst[j] for j in {item.casefold() : i for i, item in enumerate(lst)}.values()]

print(res)

输出:

['AWS certification', 'AWS Certified Solutions Architect']

答案 2 :(得分:0)

您可以使用格式为casefolded : normal的字典,然后将值作为唯一键:

lst = ['AWS Certification', 'AWS certification', 'AWS Certified Solutions Architect']

lst = list({j.casefold() : j for j in lst}.values())
print(lst)
# returns
['AWS certification', 'AWS Certified Solutions Architect']