2016-01-24 76 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)] 
相關問題