Python 我如何拆分字符串并只获取其第一部分?

Python 我如何拆分字符串并只获取其第一部分?,python,string,list,split,duplicates,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:a和1:c,所以我只想捕获1如果您只想要唯一的值,并且担心顺序,那么您可以使用,如下所示 >>> from

我有一个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

如果您只想要唯一的值,并且担心顺序,那么您可以使用,如下所示

>>> 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(item.split(':')[0] for item in l)
{'1', '3', '4', '2'}
>>> 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']
如果您不担心订单,那么您可以像这样使用
set

>>> 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(item.split(':')[0] for item in l)
{'1', '3', '4', '2'}
>>> 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']
如果希望结果按排序顺序排列,则可以使用
sorted
函数,如下所示

>>> 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(item.split(':')[0] for item in l)
{'1', '3', '4', '2'}
>>> 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']
它在排序期间比较单个项目时,将其转换为整数

您也可以在这里使用集合理解,如下所示

>>> 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(item.split(':')[0] for item in l)
{'1', '3', '4', '2'}
>>> 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)

不能使用以下语法声明列表:l=[1:a,2:b1:c,3:d,4:d]。这个语法是为字典保留的你们都在折叠我???我纠正了这个问题!!!我们是人类。。。我们所有人都可能犯下不希望发生的错误!!!使用sort不会像最初那样对列表进行排序,如果使用sort,则将按chance@PadraicCunningham不会的,但ordereddict方法在公认的答案中,我想不出另一种更简单的方法作为注释,您可以进行集合理解,而不是使用生成器表达式调用
set()
,即:
sorted({item.split(':')[0]用于l}中的项,key=int)
@Lattyware哦,是的,我完全忘记了。谢谢:-)