如何在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
相关产品推荐
相关产品推荐

