繁体   English   中英

从多个 for 循环的输出创建字典的最佳方法是什么

[英]What's the best method to create a dictionary from outputs of multiple for loops

这是我的代码:

def get_coin_tickers(url):
    req = requests.get(url)
    # print(req.text)
    resp = json.loads(req.text)
    # print(resp.text)
    return resp


pair_a_list = ["BTC_USDT", "EOS_USDT", "ETH_USDT"]
pair_b_list = ["SOL_USDT", "MATIC_USDT", "SUSHI_USDT"]

for pair_a in pair_a_list:
    orderbook_url = f'https://api.pionex.com/api/v1/market/depth?symbol={pair_a}&limit=5'
    pair_a_prices_json = get_coin_tickers(orderbook_url)
    pair_a_ask = pair_a_prices_json['data']['asks'][0][0]
    pair_a_bid = pair_a_prices_json['data']['bids'][0][0]

for pair_b in pair_b_list:
    orderbook_url = f'https://api.pionex.com/api/v1/market/depth?symbol={pair_b}&limit=5'
    pair_a_prices_json = get_coin_tickers(orderbook_url)
    pair_b_ask = pair_a_prices_json['data']['asks'][0][0]
    pair_b_bid = pair_a_prices_json['data']['bids'][0][0]

keys = ['pair_a', 'pair_a_ask', 'pair_a_bid', 'pair_b', 'pair_b_ask', 'pair_b_bid']
values = [pair_a, pair_a_ask, pair_a_bid, pair_b, pair_b_ask, pair_b_bid]

mydict = {k: v for (k, v) in zip(keys, values)}
print(mydict)

我能够创建一个字典,但每个列表中只有一个符号对。 这似乎只是两个列表的最后一个符号对的输出:

{'pair_a': 'ETH_USDT', 'pair_a_ask': '1254.18', 'pair_a_bid': '1253.51', 'pair_b': 'SUSHI_USDT', 'pair_b_ask': '0.9815', 'pair_b_bid': '0.9795'}

我期待在最终列表(之后)中看到一个组合字典,其中两个列表的值作为键(及其 API 值)使用 for Loops 遍历两个列表

根据@JonSG 的建议找到了我的问题的解决方案,并根据建议进行了调整。 我已经包含了下面的代码供其他人在需要时使用。

for pair_a_list, pair_b_list, pair_c_list in zip(pair_a_list, pair_b_list, pair_c_list):
orderbook_a_url = f'https://api.pionex.com/api/v1/market/depth?symbol={pair_a_list}&limit=1'
pair_a_prices_json = get_coin_tickers(orderbook_a_url)
pair_a_ask = pair_a_prices_json['data']['asks'][0][0]
pair_a_bid = pair_a_prices_json['data']['bids'][0][0]
my_dict_a = {
    'pair_a_ask': pair_a_ask,
    'pair_a_bid': pair_a_bid
}

orderbook_b_url = f'https://api.pionex.com/api/v1/market/depth?symbol={pair_b_list}&limit=1'
pair_b_prices_json = get_coin_tickers(orderbook_b_url)
pair_b_ask = pair_b_prices_json['data']['asks'][0][0]
pair_b_bid = pair_b_prices_json['data']['bids'][0][0]
my_dict_b = {
    'pair_b_ask': pair_b_ask,
    'pair_b_bid': pair_b_bid
}

orderbook_c_url = f'https://api.pionex.com/api/v1/market/depth?symbol={pair_c_list}&limit=1'
pair_c_prices_json = get_coin_tickers(orderbook_c_url)
pair_c_ask = pair_c_prices_json['data']['asks'][0][0]
pair_c_bid = pair_c_prices_json['data']['bids'][0][0]
my_dict_c = {
    'pair_c_ask': pair_c_ask,
    'pair_c_bid': pair_c_bid
}

# (Use either option below.)
# my_dict = {**my_dict_a, **my_dict_b, **my_dict_c}
# my_dict = my_dict_a | my_dict_b | my_dict_c

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM