如何将dict值切片到不同的列表

时间:2018-04-07 00:03:00

标签: python regex slice pycrypto

import ccxt
import time
import re

exchanges = {'mercado', 'bitfinex', 'quadrigacx','binance'}

limit = 10

def get_order_book(key,symbol):
    exchange = eval('ccxt.' + key + '()' )
    orderbook = exchange.fetch_order_book(symbol,limit)
    print (list(orderbook.keys()))

    bid = orderbook['bids']
    print (bid)

get_order_book('bitfinex', 'BTC/USD')

>>['bids', 'asks', 'timestamp', 'datetime', 'nonce']
[[6603.6, 0.02189108], [6603.1, 0.15613008], [6602.7, 1.508], [6602.0, 0.05], [6601.3, 1.0], [6601.0, 0.00499], [6600.5, 0.63660326], [6600.3, 1.5094], [6600.0, 9.0], [6598.1, 0.18676835]]

函数bids返回一个列表,其中包含每个索引的两个值,第一个是price,第二个是amount

可以将此列表分成两个列表,一个包含price,另一个包含amount

或将其放入嵌套的dict键中,供我以后使用?

它不会返回列表,而是将列表中每个索引的两个值分配给嵌套的字典

与第一个号码的new_orderbook['bids']['price']类似 new_orderbook['bids']['amount']为第二个数字

1 个答案:

答案 0 :(得分:0)

@ekhumoro是正确的。

您可以通过传递zip()所包含的迭代器(在其之前带有*运算符)来解压缩这些对。

>>> bid
[[4030.1, 0.17328499], [4030.0, 0.73859736], [4029.7, 1.921567], [4027.9, 0.31081552], [4027.3, 0.05842284], [4027.2, 1.26534116], [4027.0, 0.19425388], [4026.9, 0.04], [4026.7, 0.0133796], [4026.3, 0.93483375]]
>>> prices, amounts = zip(*bid)
>>> list(prices)
[4030.1, 4030.0, 4029.7, 4027.9, 4027.3, 4027.2, 4027.0, 4026.9, 4026.7, 4026.3]
>>> list(amounts)
[0.17328499, 0.73859736, 1.921567, 0.31081552, 0.05842284, 1.26534116, 0.19425388, 0.04, 0.0133796, 0.93483375]