我正在学习字典理解,并写了下面的代码。列表‘like’的输出如下所示:
[['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}
但这只会给我列表的最后一个条目。
发布于 2018-06-26 07:21:42
下面是一个使用第三种形式的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'}]
>>>
https://stackoverflow.com/questions/51032758
复制相似问题