我写了这样的东西,将逗号分隔列表转换成字典。
def list_to_dict( rlist ) :
rdict = {}
i = len (rlist)
while i:
i = i - 1
try :
rdict[rlist[i].split(":")[0].strip()] = rlist[i].split(":")[1].strip()
except :
print rlist[i] + ' Not a key value pair'
continue
return rdict
没有办法
for i, row = enumerate rlist
rdict = tuple ( row )
还是什么?
答案 0 :(得分:3)
你可以这样做:
>>> li=['a:1', 'b:2', 'c:3']
>>> dict(e.split(':') for e in li)
{'a': '1', 'c': '3', 'b': '2'}
答案 1 :(得分:2)
如果我正确理解您的要求,那么您可以使用以下单行。
def list_to_dict(rlist):
return dict(map(lambda s : s.split(':'), rlist))
示例:
>>> list_to_dict(['alpha:1', 'beta:2', 'gamma:3'])
{'alpha': '1', 'beta': '2', 'gamma': '3'}
分割后,您可能需要strip()
键和值以修剪空白。
return dict(map(lambda s : map(str.strip, s.split(':')), rlist))
答案 2 :(得分:0)
你提到了冒号和逗号,所以也许你有一个字符串,键/值对用逗号分隔,键和值依次用冒号分隔,所以:
def list_to_dict(rlist):
return {k.strip():v.strip() for k,v in (pair.split(':') for pair in rlist.split(','))}
>>> list_to_dict('a:1,b:10,c:20')
{'a': '1', 'c': '20', 'b': '10'}
>>> list_to_dict('a:1, b:10, c:20')
{'a': '1', 'c': '20', 'b': '10'}
>>> list_to_dict('a : 1 , b: 10, c:20')
{'a': '1', 'c': '20', 'b': '10'}
这使用迭代生成器表达式的字典理解来创建包含从字符串中提取的键/值对的字典。在键和值上调用strip()
,以便处理空格。