在尝试将列表附加到 dict 时,我偶然发现了一些我不太明白的东西。我试图附加到嵌套字典的值,但我的输出很奇怪。
对于输入,每个list[index]
对应于other_list[index]
。
输入
timestamp = [1450625399, 1450625399, 1450625399, 1450625399, 1450625399, 1450625399, 1450625399, 1450625399, 1450625399, 1450625399]
instrument = ["AAPL", "AAPL", "AAPL", "HPQ", "AAPL", "HPQ", "AAPL", "HPQ", "AAPL", "AAPL"]
side = ["sell", "sell", "buy", "buy", "buy", "buy", "buy", "buy", "buy", "sell"]
price = [1, 10, 2, 9, 3, 8.8, 4.44, 7, 5, 6]
size = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
方法
import datetime
import collections
def timestamp_to_date(stamp):
return datetime.datetime.fromtimestamp(stamp).strftime('%Y-%m-%d')
def dailyOHLC(timestamp, instrument, side, price, size):
out = []
dates = collections.defaultdict(dict)
for i in range(len(timestamp)):
try:
dates[timestamp_to_date(timestamp[i])][instrument[i]].append([side[i], price[i], size[i]])
except:
dates[timestamp_to_date(timestamp[i])][instrument[i]] = [side[i], price[i], size[i]]
print dict(dates)
我可能遗漏了一些明显的东西,但我目前的输出是
output @print = {'2015-12-20': {u'AAPL': [u'sell', 1, 1, [u'sell', 10, 2], [u'buy', 2, 3], [u'buy', 3, 5], [u'buy', 4.44, 7], [u'buy', 5, 9], [u'sell', 6, 10]]}}
虽然我期待这样的事情
expected @ print = {'2015-12-20': {u'AAPL': [[u'sell', 1, 1], [u'sell', 10, 2], [u'buy', 2, 3], [u'buy', 3, 5], [u'buy', 4.44, 7], [u'buy', 5, 9], [u'sell', 6, 10]]}}
我的问题在于嵌套列表的格式[... ,[...],[...]]
而不是[[...],[...],[...]]
.
如果单个交易的时间戳都相同,那么您不必每次都将其转换为日期。
但是,主要问题在这里:
except:
dates[timestamp_to_date(timestamp[i])][instrument[i]] = [[side[i], price[i], size[i]]]
# ______________________________________________________^----------------------------^
你缺少这些额外的括号。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句