2010-10-12 27 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

相关问题