我怎样才能拆分字符串并只获取它的第一部分?

How can I split the strings and get only the first part of it?

我在 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

如果你只想要唯一值并且担心顺序,那么你可以使用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']

它在排序过程中比较单个项目时将其转换为整数。

你也可以在这里使用集合理解,像这样

>>> sorted({item.split(':')[0] for item in l}, key=int)
['1', '2', '3', '4']

首先,您可能应该使用字符串中的数字制作一个新列表

numbers = [i.split(":")[0] for i in l]

这是列表理解,但您可以使用 for 循环。

然后,用一组去重

no_duplicates = list(set(numbers))

如果您担心列表的顺序,请按以下顺序排序:

no_duplicates.sort(key=int)