如果我有两个列表
dates = []
closes = []
我有一本字典
dict2write = {'date', 'close'}
如何用两个列表填写字典?我要把字典写成csv。
答案 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)
你真的想做什么?
dates
和closes
的长度是否相同,您希望制作一个字典,其中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 。)
或者你想要一些不同的东西吗?