我有一个从多个列表生成的列表。此组合列表包含最终用户生成的名称。因此包含相似的名称,但具有不同的大写/小写字符。 我想过滤掉包含相同字符的名称,只保留原始列表中找到的第一个。
例如,我有以下列表:
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']
