Python-编写一个循环,创建将数据附加到字典词典,日期是关键值?

时间:2017-12-06 03:16:04

标签: python dictionary gdax-api

我试图创建一个词典字典,其中每个字典的键是datetime.now(),每个键的值是一个字典。这个字典是从API中提取的,我会不断地运行循环。它看起来像这样:

orders_dict = {}
sleep_time = 1
crypto = 'BTC' #ETH, LTC

x = 0
while x < 5:
try:
    now = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())


    order_book = public_client.get_product_order_book('{}-USD'.format(crypto), level=2)

    # Append to dictionaries
    orders_dict[now] = orders_dict

    x += 1
    time.sleep(sleep_time)

except:

    continue

理论上这应该可行,但出于某种原因,当我运行此代码时,每个键的值都搞砸了:

{'2017-12-06 02:44:57': {...},
 '2017-12-06 02:44:58': {...},
 '2017-12-06 02:45:00': {...},
 '2017-12-06 02:45:02': {...},
 '2017-12-06 02:45:03': {...}}

当我尝试按键提取时,它仍然无法正常工作。欣赏有关正在发生的事情的洞察力,以及是否有更好的方法来解决这个问题。

1 个答案:

答案 0 :(得分:1)

您可能希望使用defaultdict模块中的collections,与嵌套dicts相关的复杂性很容易。

一旦我们定义了字典的defaultdict,你就可以简单地创建一个新密钥对,密钥为now,值为api记录。 (如下)。

>>> from collections import defaultdict
>>> d = defaultdict(dict)
>>> d
defaultdict(<type 'dict'>, {})
>>> now = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())
>>> d[now]= { 'book1' : 'author1', 'book2' : 'author2'}
>>> d
defaultdict(<type 'dict'>, {'2017-12-06 04:11:02': {'book1': 'author1', 'book2': 'author2'}})
>>>