我正在使用 Robin-Stocks 库
https://readthedocs.org/projects/robin-stocks/downloads/pdf/latest/
特别是:
robin_stocks.robinhood.orders.get_all_open_stock_orders(info=None)
根据上面链接中的文档。这将返回键/值对的字典列表。我是使用 python 的新手,并不真正知道如何处理这些数据。如果我这样做:
myData = rs.orders.get_all_open_stock_orders()
print(myData)
简化的结果是:
[{'id': 'foo', 'last': {'amount': '3.79', 'cod': 'USD'}, 'peg': {'tp': 'per', 'per': 15}, 'sid': 'sel'}, {'id': 'bar', 'last': {'amount': '4.22', 'cod': 'USD'}, 'peg': {'tp': 'per', 'per': 18}, 'sid': 'sel'}, {'id': 'tom', 'last': None, 'peg': None, 'sid': 'sel'}]
实际上,列表要长得多。就像我说的,这是简化的。正如文档所说,它是键/值对的字典列表。例如,有一个键“id”和一个值“foo”,另一个键“id”和一个值“bar”,另一个键“id”和一个值“tom”,还有一个字典“last”:{ 'amount': '3.79', 'cod': 'USD'} 和另一个字典 'last': {'amount': '4.22', 'cod': 'USD'} 但有时键 'last' 有一个值的 None 而不是字典。
如果我想制作类似的东西:
test = some code i don't know how to do
print(test)
结果:
amount
foo 3.79
bar 4.22
tom None
我该怎么做?
同样,我将如何获得:
peg
foo 15
bar 18
tom None
是否有可能产生这个:
amount peg
foo 3.79 15
bar 4.22 18
tom None None
答案 0 :(得分:0)
给定:
data = [{'id': 'foo', 'last': {'amount': '3.79', 'cod': 'USD'}, 'peg': {'tp': 'per', 'per': 15}, 'sid': 'sel'}, {'id': 'bar', 'last': {'amount': '4.22', 'cod': 'USD'}, 'peg': {'tp': 'per', 'per': 18}, 'sid': 'sel'}, {'id': 'tom', 'last': None, 'peg': None, 'sid': 'sel'}]
这个:
test = [(d['id'], (d.get('last') or {}).get('amount'), (d.get('peg') or {}).get('per')) for d in data]
print('\tamount\tpeg\n' + '\n'.join('\t'.join(map(str, item)) for item in test))
产生:
amount peg
foo 3.79 15
bar 4.22 18
tom None None
请注意,只要没有字段值超过 TAB 的宽度,此打印语句只会保持列对齐。更好的方法是计算每列的最大字段长度并使用 width format specifier 将每列格式化为固定宽度。