2016-01-24 72 views
-3

['A:2','B:2','C:2','D:1']如何获取字符串列表并返回对列表?

如何摆脱冒号并用逗号替换冒号?那么,你如何获得上面的代码并使其看起来像下面的代码?

[( 'A',2),( 'B',2),( 'C',2),( 'd',1)]

+0

请使用''',而不是反引号。 –

回答

1

每个在该列表上的字符串的分割:

>>> L = ['A:2','B:2','C:2','D:1'] 
>>> [tuple(x.split(':')) for x in L] 
[('A', '2'), ('B', '2'), ('C', '2'), ('D', '1')] 
+3

期望的输出看起来像包含一个字符串和一个数字而不是两个字符串的元组列表。所以也许,你需要将元组的第二个元素作为int或float进行投射。 – albert

0

您可能想要查看map函数以及split()如何工作。 lambda允许你创建你自己的函数,该函数映射到可迭代的每个单元上,或映射到每个单元上。L = ['A:2','B:2','C:2', 'd:1']

结果=地图(拉姆达X:元组(x.split( ':')),L)

如果希望的字母的值是int类型,然后:

结果=地图(拉姆达X:(x.split( ':')[0],INT(x.split( ':')[0])),L)

2

使用列表补偿rehension:

[(y[0], int(y[1])) for y in [x.split(':') for x in ['A:2', 'B:2', 'C:2', 'D:1']]] 
0
>>> items = ['A:2', 'B:2', 'C:2', 'D:1'] 

>>> [(a, int(b)) for a, b in (item.split(':') for item in items)] 
[('A', 2), ('B', 2), ('C', 2), ('D', 1)] 
相关问题