如何将列表元素的特定字符添加到元组

时间:2018-03-08 03:01:49

标签: python string python-3.x list tuples

我有一个列表,其中包含一些如下所示的元素:

data = ["1: 6987", "2: 5436", "7: 9086"]

是否可以将元素组合在一起:

tuple_data = [("1", 6987) , ("2", 5436), ("7", 9086)]

4 个答案:

答案 0 :(得分:2)

splits = [record.split(": ") for record in data]
tuple_data = [(first, int(second)) for first, second in splits]

如果您愿意,也可以在一行中完成:

tuple_data = [(first, int(second)) for first, second in [record.split(": ") for record in data]]

答案 1 :(得分:1)

mapsplit可用于此:

 data = ["1: 6987", "2: 5436", "7: 9086"]
 map(lambda i: (i.split(': ')[0], int(i.split(': ')[1])), data)

结果:

 [('1', 6987), ('2', 5436), ('7', 9086)]

lambda定义了一个匿名函数,split ': '上的每个元素,并将该拆分的第一部分和第二部分添加到元组,而map应用匿名(lambda)函数到data中的每个元素。

可能有更优雅的方式:)。

答案 2 :(得分:0)

列表理解是一种方式:

data = ["1: 6987", "2: 5436", "7: 9086"]

res = [(i.split(':')[0], int(i.split(':')[1])) for i in data]

# [('1', 6987), ('2', 5436), ('7', 9086)]

如果只需要整数,则语法更简单:

res = [tuple(map(int, i.split(':'))) for i in data]

# [(1, 6987), (2, 5436), (7, 9086)]

答案 3 :(得分:0)

您可以使用列表理解:

data = [(i[:i.find(':')], int(i[i.find(':')+1:].strip())) for i in data]

结果:

[(' 1',6987),(' 2',5436),(' 7',9086)]