Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解析int的映射->;从字符串中列出_Python - Fatal编程技术网

Python 解析int的映射->;从字符串中列出

Python 解析int的映射->;从字符串中列出,python,Python,这应该是一个相当直截了当的python问题,但我在正确理解语法方面遇到了困难 假设我有一个字符串: "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循环来实现它,但如果只在一行中实现它,那就太酷了 谢谢 这里有一种方法: dict((k, v.split(',')) for k,v

这应该是一个相当直截了当的python问题,但我在正确理解语法方面遇到了困难

假设我有一个字符串:

"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循环来实现它,但如果只在一行中实现它,那就太酷了

谢谢

这里有一种方法:

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

提示:看看string的split方法,你可以用它将输入字符串分成块,你可以进一步处理(可能需要更多的split调用)可怕的名称,但在其他方面很完美+1@delnan:不太完美,无法使用
list()
redundant@John谢谢你指出这一点。我不确定split是否在所有版本的Python中都会返回一个列表,所以这是出于安全考虑。但我现在检查了一下,似乎总是这样。现已修复。:)我也不确定split是否返回了一个列表。他们在Python3中将几乎所有内容都变成了迭代器(这是一件好事)