Skip to main content
 首页 » 编程设计

python之python 中的集合不区分大小写

2025年05月04日53虾米哥

我有一个从多个列表生成的列表。此组合列表包含最终用户生成的名称。因此包含相似的名称,但具有不同的大写/小写字符。 我想过滤掉包含相同字符的名称,只保留原始列表中找到的第一个。

例如,我有以下列表:

L0 = ['A_B Cdef', 'A_B Cdef', 'A_B Cdef', 'A_B CdEF', 'A_B CDEF','a_B CdEF', 'A_b CDEF', 'GG_ooo', 'a1-23456'] 

如果我运行:

L1 = list(set(L0)) 

我得到:

['a1-23456', 'A_B Cdef', 'A_B CdEF', 'A_B CDEF', 'a_B CdEF', 'A_b CDEF', 'GG_ooo'] 

我只想保留第一个具有相同字符的名称。

所以我的结果是:

['a1-23456', 'A_B Cdef', 'GG_ooo'] 

如果我使用 .lower()、.upper() 我会得到列表,但名称是小写/大写的。

我只想消除“重复项”而不考虑区分大小写的方法。

非常感谢帮助。

谢谢!

请您参考如下方法:

您可以使用集合跟踪值的 .lower() 版本,然后如果它们的 .lower() 版本不是,则将原始值附加到新列表' 已经在集合中:

s = set() 
L = [] 
for x in L0: 
  if x.lower() not in s: 
      s.add(x.lower()) 
      L.append(x) 
 
print(L) 
# ['A_B Cdef', 'GG_ooo', 'a1-23456']