我有两个清单:
labels = chunks[0].split("\n")
print(labels)
['Date', 'Open', 'High', 'Low', 'Close', 'Volume']
day0 = chunks[1].split("\n")
print(day0)
['Feb 7, 2014', '15,630.64', '15,798.51', '15,625.53', '15,794.08', '105,782,495']
我想将它们组合起来: ['日期':'2014年2月7日',......,'卷':'105,782,495']
我尝试过使用zip和理解,但似乎无法使其工作。我可以通过双循环来轻松实现这一点,但我正在尝试学习pythonesque方法。
例如,这似乎不起作用:
zipped = zip(labels, day0)
print(zipped)
谢谢!
答案 0 :(得分:4)
zipped = dict(zip(labels, day0))
或
zipped = {lab:day for lab,day in zip(labels, day0)}
编辑:看起来标签很少会发生变化;根据您要存储的天数和种群数量,使用namedtuple可能更有效,如下所示:
from collections import namedtuple
labels = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume']
StockDay = namedtuple('StockDay', [s.lower() for s in labels])
day0 = ['Feb 7, 2014', '15,630.64', '15,798.51', '15,625.53', '15,794.08', '105,782,495']
item = StockDay(*day0)
print(item)
导致
StockDay(date='Feb 7, 2014', open='15,630.64', high='15,798.51', low='15,625.53', close='15,794.08', volume='105,782,495')
然后可以按
访问字段item.date # => 'Feb 7, 2014'
这有多重要?
import sys
print(sys.getsizeof(zipped)) # => 524 bytes
print(sys.getsizeof(item)) # => 52 bytes
... namedtuple使用的内存不到dict的十分之一。
答案 1 :(得分:0)
虽然上面的Huge的答案很花哨,但我想补充两点。
['Date':'Feb 7, 2014', ...., 'Volume':'105,782,495']
是python的无效语法,
[
和]
表示它是一个列表,而:
表示它可能是一个字典。
似乎{'Date':'Feb 7, 2014', ...., 'Volume':'105,782,495'}
会更好。
zip(labels,day0)将返回一个元组列表,如python文档(http://docs.python.org/2/library/functions.html#zip)中所述。
所以,用
zipped= zip (labels, day0)
压缩将类似于
[('Date', 'Feb 7, 2014'),
('Open', '15,630.64'),
('High', '15,798.51'),
('Low', '15,625.53'),
('Close', '15,794.08'),
('Volume', '105,782,495')]