将冒号分隔列表转换为字典?

时间:2017-02-06 01:44:14

标签: python list dictionary

我写了这样的东西,将逗号分隔列表转换成字典。

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 ) 

还是什么?

3 个答案:

答案 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(),以便处理空格。