如何分割字符串并仅获取其中的第一部分?

时间:2015-04-11 11:09:50

标签: python string list split duplicates

我在python中有一个列表,如下所示:

l=['1:a', '2:b' '1:c', '3:d', '4:d' ]

我想从列表中删除重复项..但不是整个索引。我想从每个索引的第一个参数中删除重复项:

list(set(l)).split(':')[0]

但我知道这是不正确的。我想要以下结果:

>>> ['1', '2', '3', '4']

我有1:a1:c所以我想只捕获1

2 个答案:

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