You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从多轮for循环输出构建完整字典?现有代码仅保留最后一组数据

问题分析

原代码的核心问题是:两轮for循环中,每次迭代都会覆盖pair_a、pair_a_ask、pair_a_bid以及pair_b相关变量,循环结束后这些变量仅保留最后一组交易对的数据,最终构建字典时自然只能得到最后一组结果。

解决方案

需要用容器(字典/列表)存储所有交易对的报价数据,而非每次覆盖单个变量。以下是修改后的代码:

import requests
import json

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

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

# 初始化两个字典,分别存储两组交易对的报价
pair_a_data = {}
pair_b_data = {}

# 遍历第一组交易对,存储每个交易对的买一、卖一价格
for pair in pair_a_list:
    orderbook_url = f'https://api.pionex.com/api/v1/market/depth?symbol={pair}&limit=5'
    prices_json = get_coin_tickers(orderbook_url)
    ask_price = prices_json['data']['asks'][0][0]
    bid_price = prices_json['data']['bids'][0][0]
    pair_a_data[pair] = {'ask': ask_price, 'bid': bid_price}

# 遍历第二组交易对,同理存储数据
for pair in pair_b_list:
    orderbook_url = f'https://api.pionex.com/api/v1/market/depth?symbol={pair}&limit=5'
    prices_json = get_coin_tickers(orderbook_url)
    ask_price = prices_json['data']['asks'][0][0]
    bid_price = prices_json['data']['bids'][0][0]
    pair_b_data[pair] = {'ask': ask_price, 'bid': bid_price}

# 构建包含所有数据的最终字典
mydict = {
    'pair_a_group': pair_a_data,
    'pair_b_group': pair_b_data
}

print(mydict)
输出示例

运行后会得到包含所有交易对的完整数据,格式类似:

{
    'pair_a_group': {
        'BTC_USDT': {'ask': 'xxx', 'bid': 'xxx'},
        'EOS_USDT': {'ask': 'xxx', 'bid': 'xxx'},
        'ETH_USDT': {'ask': '1254.18', 'bid': '1253.51'}
    },
    'pair_b_group': {
        'SOL_USDT': {'ask': 'xxx', 'bid': 'xxx'},
        'MATIC_USDT': {'ask': 'xxx', 'bid': 'xxx'},
        'SUSHI_USDT': {'ask': '0.9815', 'bid': '0.9795'}
    }
}

内容的提问来源于stack exchange,提问作者chiefcoiner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 20:15:44