我怎样才能拆分字符串并只获取它的第一部分?
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:a
和 1: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)
我在 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
。
如果你只想要唯一值并且担心顺序,那么你可以使用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)