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
这样的内置名称。此外,列表的包含检查成本很高,因此如果您有大量数据,则应考虑使用 set
或 dict
.
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'}
我有一个包含重复项的列表,有些完全相同,而另一些只是开头有一个前缀。 例如,以下条目引用相同的条目: '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
这样的内置名称。此外,列表的包含检查成本很高,因此如果您有大量数据,则应考虑使用 set
或 dict
.
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'}