对于python3,您可以使用dict comp,使用扩展的可迭代解包来拆分列表中的每个字符串并创建从拆分元素中删除的键/值:
l = ['A,5']
d = {k: list(map(int,rest)) for k,*rest in (s.split(",") for s in l) }
对于python2,语法不太好:
l = ['A,5']
d = {s[0]: map(int,s[1:] ) for s in (s.split(",") for s in l)}
两者都应该给你这样的东西:
In [32]: d = {k: list(map(int,") for s in l) }
In [33]: d
Out[33]: {'A': [1,'B': [2,'C': [4,4],'D': [4,5]}
为了打破它,内部的exp创建我们的分裂字符串:
In [35]: list (s.split(",") for s in l)
Out[35]: [['A','1','1'],['B','2',['C','4','4'],['D','5']]
然后在python3的情况下,对于k,* rest in .. k是列表的第一个元素,* rest语法基本上意味着其他一切.
In [37]: for k,") for s in l):
print(k,rest)
....:
A ['1','1']
B ['2','1']
C ['4','4']
D ['4','5']
所以将它们放在一起使用for循环创建dict将是:
In [38]: d = {}
In [39]: for k,") for s in l):
d[k] = list(map(int,rest))
....:
In [40]: d
Out[40]: {'A': [1,5]}
或者在python2的情况下:
In [42]: d = {}
In [43]: for spl in (s.split(",") for s in l):
d[spl[0]] = list(map(int,spl[1:]))
....:
In [44]: d
Out[44]: {'A': [1,5]}