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

Vic*_*tor 6 python dictionary list

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

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
Run Code Online (Sandbox Code Playgroud)

有没有办法

for i, row = enumerate rlist
    rdict = tuple ( row ) 
Run Code Online (Sandbox Code Playgroud)

或者其他的东西?

daw*_*awg 6

你可以做:

>>> li=['a:1', 'b:2', 'c:3']
>>> dict(e.split(':') for e in li)
{'a': '1', 'c': '3', 'b': '2'}
Run Code Online (Sandbox Code Playgroud)

如果字符串列表需要剥离,您可以执行以下操作:

>>> li=["a:1\n", "b:2\n", "c:3\n"]
>>> dict(t.split(":") for t in map(str.strip, li))
{'a': '1', 'b': '2', 'c': '3'}
Run Code Online (Sandbox Code Playgroud)

或者,也:

>>> dict(t.split(":") for t in (s.strip() for s in li))
{'a': '1', 'b': '2', 'c': '3'}
Run Code Online (Sandbox Code Playgroud)


5go*_*der 5

如果我正确理解您的要求,那么您可以使用以下一行。

def list_to_dict(rlist):
    return dict(map(lambda s : s.split(':'), rlist))
Run Code Online (Sandbox Code Playgroud)

例子:

>>> list_to_dict(['alpha:1', 'beta:2', 'gamma:3'])
{'alpha': '1', 'beta': '2', 'gamma': '3'}
Run Code Online (Sandbox Code Playgroud)

您可能需要strip()分割后的键和值以修剪空白。

return dict(map(lambda s : map(str.strip, s.split(':')), rlist))
Run Code Online (Sandbox Code Playgroud)