我在python中有一个列表,如下所示:
l=['1:a', '2:b' '1:c', '3:d', '4:d' ]
我想从列表中删除重复项..但不是整个索引。我想从每个索引的第一个参数中删除重复项:
list(set(l)).split(':')[0]
但我知道这是不正确的。我想要以下结果:
>>> ['1', '2', '3', '4']
我有1:a
和1:c
所以我想只捕获1
。
答案 0 :(得分:1)
如果您只想要唯一的值并且您对订单感到担心,那么您可以使用collections.OrderedDict
,就像这样
>>> from collections import OrderedDict
>>> l = ['1:a', '2:b' '1:c', '3:d', '4:d']
>>> list(OrderedDict.fromkeys(item.split(':')[0] for item in l).keys())
['1', '2', '3', '4']
如果您不担心订单,那么您可以像这样使用set
>>> set(item.split(':')[0] for item in l)
{'1', '3', '4', '2'}
如果您希望结果按排序顺序排列,那么您可以使用sorted
函数,就像这样
>>> sorted(set(item.split(':')[0] for item in l), key=int)
['1', '2', '3', '4']
在排序过程中将它们进行比较时,它会将各个项目转换为整数。
你也可以在这里使用set comprehension,就像这样
>>> sorted({item.split(':')[0] for item in l}, key=int)
['1', '2', '3', '4']
答案 1 :(得分:1)
首先,您应该使用字符串
中的数字创建一个新列表numbers = [i.split(":")[0] for i in l]
这是列表解析,但你可以使用for循环。
然后,使用一个集删除重复
no_duplicates = list(set(numbers))
如果您担心列表的顺序,请按以下方式排序:
no_duplicates.sort(key=int)