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

如何在Python中遍历列表并获取最后出现的ASK与BID价格?

问题:获取列表中最后出现的ASK和BID价格

给定如下包含多组ASK、BID、LAST价格的Python列表,如何遍历该列表以获取最后出现的ASK和BID价格?

aList = [
    ({'BID'}, 0.36), 
    ({'ASK'}, 0.37), 
    ({'LAST'}, 0.36), 
    ({'BID'}, 0.35), 
    ({'ASK'}, 0.36), 
    ({'BID'}, 0.34), 
    ({'ASK'}, 0.35), 
    ({'LAST'}, 0.34)
] 

期望输出:

ASK = 0.35
BID = 0.34
解决方案

方式一:正向遍历记录最新值

借助字典存储ASK和BID的最新价格,遍历列表时后续出现的同类型价格会覆盖之前的记录,最终字典中留存的就是最后出现的目标价格:

price_map = {}
for key_set, price in aList:
    # 提取集合中的唯一键(BID/ASK/LAST)
    key = next(iter(key_set))
    # 仅更新ASK和BID的记录
    if key in ('ASK', 'BID'):
        price_map[key] = price

print(f"ASK = {price_map['ASK']}")
print(f"BID = {price_map['BID']}")

方式二:反向遍历提前终止(适合大列表场景)

若列表数据量较大,可从后往前遍历,找到第一个ASK和BID后立即终止循环,避免遍历整个列表,提升效率:

final_ask = None
final_bid = None

# 反向遍历列表
for key_set, price in reversed(aList):
    key = next(iter(key_set))
    if key == 'ASK' and final_ask is None:
        final_ask = price
    elif key == 'BID' and final_bid is None:
        final_bid = price
    # 当两个目标价格都找到时退出循环
    if final_ask is not None and final_bid is not None:
        break

print(f"ASK = {final_ask}")
print(f"BID = {final_bid}")

以上两种方式均可得到期望的输出,第一种代码简洁易维护,第二种在大数据量场景下性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:33:08