Python获取嵌套字典最小数值1.12498触发TypeError如何解决
错误原因
你编写的代码直接对最外层的data字典取最小值,该字典的三个键对应的值分别为字符串类型的交易对、字符串类型的时间粒度、列表类型的K线数据,Python不支持字符串与列表直接比较大小,因此触发TypeError报错。
解决方法
你需要的最小数值1.12498存储在K线列表的mid字段的最低价格(l)中,可通过遍历K线列表提取对应数值后求最小值,示例代码如下:
# 方法1:直接提取所有mid的最低价格求最小值 all_mid_lows = [float(candle['mid']['l']) for candle in data['candles']] lowest_value = min(all_mid_lows) print(lowest_value) # 输出 1.12498
如果你需要同时获取最小值对应的完整K线信息,可以用以下写法:
# 方法2:获取最小值对应的完整K线数据 lowest_candle = min(data['candles'], key=lambda item: float(item['mid']['l'])) # 打印最小值 print(lowest_candle['mid']['l']) # 打印该K线对应的时间 print(lowest_candle['time'])
如果你需要遍历bid、mid、ask下的所有价格字段(开盘、最高、最低、收盘)找全局最小值,可以用以下写法:
# 方法3:遍历所有价格字段找全局最小值 all_prices = [] for candle in data['candles']: for price_category in ['bid', 'mid', 'ask']: for price_field in ['o', 'h', 'l', 'c']: all_prices.append(float(candle[price_category][price_field])) global_lowest = min(all_prices) print(global_lowest)
内容的提问来源于stack exchange,提问作者tiberhockey
相关产品推荐
相关产品推荐

