python 列表中的重复项

Duplicate entry in python list

我有一个包含重复项的列表,有些完全相同,而另一些只是开头有一个前缀。 例如,以下条目引用相同的条目: 'user01'、'aa-user01'、'xyz-user01'

我成功删除了完全相同但没有前缀的条目:

list = ['user01','user01', 'aa-user01','user02','user02', 'user03', 'xyz-user02']
list2 = []

for i in range(0, len(list)):
    if list[i] not in list2:
        list2.append(list[i])

print(list2)

我明白了:

['user01', 'aa-user01', 'user02', 'user03', 'xyz-user02']

我想要的结果:

['user01', 'user02', 'user03']

最简单的修复只考虑 "-":

之后的标记
for x in list:
    user = x.rsplit("-", 1)[-1]
    if user not in list2:
        list2.append(user)

注意:您不应该隐藏 list 这样的内置名称。此外,列表的包含检查成本很高,因此如果您有大量数据,则应考虑使用 setdict.

s = set(x.rsplit("-", 1)[-1] for x in lst)

文档:

list1 = ['user01','user01', 'aa-user01','user02','user02', 'user03', 'xyz-user02']
list2 = []

for i in range(0, len(list1)):
    if list1[i] not in list2:
        list2.append(list1[i])

list2 = list(dict.fromkeys(list2))
print(list2)

打印(列表 2)

一种方法是先使用列表理解删除前缀;

删除前缀

list = ['user01','user01', 'aa-user01','user02','user02', 'user03', 'xyz-user02']
list = [i.split('-', 1)[-1] for i in l]
list2 = []

for i in range(0, len(list)):
    if list[i] not in list2:
        list2.append(list[i])

print(list2)

您可以进行简短的列表理解,包括:

  • lower() -> 忽略大小写输入(如果不需要则删除)
  • split() -> 删除前缀
  • set() -> 删除重复项

您的结果将是 set([x.lower().split('-', 1)[-1] for x in test_list]),而 test_list 是您的列表。

for i in range(0, len(list)):

    if list[i][list[i].find("user"):] not in list2:
        list2.append(list[i])
my_list = ['user01','user01', 'aa-user01','user02','user02', 'user03', 'xyz-user02']


new_list = [j.split('-')[1] if len(j.split('-'))==2 else j for j in my_list]
    ['user01', 'user01', 'user01', 'user02', 'user02', 'user03', 'user02']#value of new_list
    set(new_list)#output unique values
    {'user01', 'user02', 'user03'}