我试图创建一个词典字典,其中每个字典的键是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': {...}}
当我尝试按键提取时,它仍然无法正常工作。欣赏有关正在发生的事情的洞察力,以及是否有更好的方法来解决这个问题。
答案 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'}})
>>>