两个列表到一个词典Python

时间:2014-07-31 09:03:56

标签: python list csv dictionary

如果我有两个列表

dates = []
closes = []

我有一本字典

dict2write = {'date', 'close'}

如何用两个列表填写字典?我要把字典写成csv。

3 个答案:

答案 0 :(得分:2)

使字典使用zip()形成元组,然后dict()创建字典。

>>> dates = ['2014-07-31', '2013-11-22', '2014-01-01']
>>> closes = ['what', 'is', 'this?']
>>> zip(dates, closes)
[('2014-07-31', 'what'), ('2013-11-22', 'is'), ('2014-01-01', 'this?')]
>>> d = dict(zip(dates, closes))
>>> d
{'2013-11-22': 'is', '2014-07-31': 'what', '2014-01-01': 'this?'}

但是如果你想将数据写入CSV文件,你不需要创建字典,你只需要压缩列表。

import csv
with open('data.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerows(zip(dates, closes))

data.csv中的输出是:

2014-07-31,what
2013-11-22,is
2014-01-01,this?

另外值得一提的是,如果列表的长度不同,您可以使用itertools.izip_longest()压缩列表。 e.g。

import csv
from itertools import izip_longest
dates = ['2014-07-31', '2013-11-22', '2014-01-01']
closes = ["what's", 'this?']
with open('data.csv', 'w') as f:
    csv.writer(f).writerows(izip_longest(dates, closes))

这会在生成的CSV文件中将缺失的列留空:

2014-07-31,what's
2013-11-22,this?
2014-01-01,

答案 1 :(得分:1)

字典是键/值对,您是否在寻找:

dict2write = {}
dict2write['date'] = dates
dict2write['close'] = closes

或者我错过了什么?

答案 2 :(得分:0)

你真的想做什么?

datescloses的长度是否相同,您希望制作一个字典,其中dates为关键字,closes{dates[0]: closes[0], dates[1]: closes[1], ...} < / p>

如果是这样,您可以使用construct a dictionary out of a list of (key, value) pairs制作该列表来zip使用这一事实:

 dict2write = dict(zip(dates, closes)) 

但如果这不是你想要的,如果你想要'date''close'成为关键,那么它就更容易了:

dict2write = {'date': dates, 'close': closes}

(另请注意,您的问题中的&#34;字典&#34; {'date', 'close'}不是字典,而是 set 。)

或者你想要一些不同的东西吗?