我想从下面的列表中删除重复项,同时保留大小写吗?
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']
但这会小写所有我不需要的单词。
要查找任何一行代码吗?
答案 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']