python一种从列表创建字典的衬里

时间:2018-06-25 22:51:52

标签: python-2.7

我正在学习字典理解,并编写了以下代码。 列表“行”的输出如下所示:

[['Color', 'Blue', 'Model', 'Ford'], ['Color', 'Green', 'Model', 'Honder'], ['Color', 'Pink', 'Model', 'peugeot']]

'

#!/Library/Frameworks/Python.framework/Versions/2.7/bin/python

import pprint
d={}

FILE='File.txt'
with open(FILE, 'r') as Data:

    lines = [line.split() for line in Data ]
    #print lines

    for x in lines:
        d[x[0]] = x[1]
        d[x[2]] = x[3]

        pprint.pprint(d)

基本上,我试图弄清楚如何将上述for循环转换为单行。

到目前为止,我尝试了以下代码:

e = {x[0]:x[1] for x in lines}

但这只会给我列表的最后一个条目。

1 个答案:

答案 0 :(得分:1)

这是使用dict constructor的第三种形式的干净解决方案:

>>> from itertools import izip
>>> l=[['Color', 'Blue', 'Model', 'Ford'], ['Color', 'Green', 'Model', 'Honder'], ['Color', 'Pink', 'Model', 'peugeot']]
>>> [dict(izip(d[::2], d[1::2])) for d in l]
[{'Color': 'Blue', 'Model': 'Ford'}, {'Color': 'Green', 'Model': 'Honder'}, {'Color': 'Pink', 'Model': 'peugeot'}]
>>>