2010-10-12 56 views
3

這應該是一個相當直接的python問題,但我被卡住了,語法正確。從一個字符串解析int - > list的地圖

比方說,我有一個字符串:

"1:a,b,c::2:e,f,g::3:h,i,j" 

,我想將其轉換爲一個地圖,像這樣:

{'1': ['a', 'b', 'c'], '2': ['e', 'f', 'g'], '3': ['h', 'i', 'j']} 

這將如何做呢?

我可以弄清楚如何使用嵌套for循環來做到這一點,但僅僅在一行中做就很酷。

謝謝!

+0

提示:看看,你可以用它來打破你的輸入字符串成塊,從而可以進一步(有更多的通話可能分裂)工作的字符串的分割方法 – stew 2010-10-12 20:38:26

回答

8

這裏有一個辦法:

dict((k, v.split(',')) for k,v in (x.split(':') for x in s.split('::'))) 
+0

可怕名稱,但在其他方面完美+1 – delnan 2010-10-12 20:41:06

+0

@delnan:不完美,使用list()是多餘的 – 2010-10-12 21:33:12

+0

@John Machin:謝謝你指出。我不確定split是否會在所有版本的Python中返回一個列表,以便安全地使用它。但我現在檢查,它似乎總是這樣。現在修復。 :) – 2010-10-12 21:40:14