python列表中的重复项

2024-09-24 00:32:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含重复项的列表,有些是完全相同的,而另一些只是在开头有一个前缀。 例如,以下条目引用同一条目: “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']

Tags: in列表forlenifnot条目range
3条回答

最简单的修复只考虑在{{CD1>}:

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

注意:您不应该对list之类的内置名称进行阴影处理。此外,包含检查对于列表来说是昂贵的,因此如果您有大量数据,则应该考虑使用^ {< CD3> }或^ {< CD4}}。

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

文件:

一种方法是首先使用列表删除前缀

删除前缀

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)
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)

相关问题 更多 >