值为列表的字典按索引取最大值对应键及AttributeError问题解决
报错原因分析
- 第一个错误点:
allocuteUR方法当前返回值是单个姓名字符串,你在主函数中尝试对字符串调用.keys属性,自然触发AttributeError: 'str' object has no attribute 'keys' - 第二个错误点:原方法的逻辑没有实现「按列表索引位置求最大值对应键」的需求,现有
max(mapMobileMkn, key=mapMobileMkn.get)是比较整个列表的大小,只会返回一个全局的最大键,不会按索引分别计算 - 第三个错误点:主函数中不需要重新实例化
MaxSNR类,拿到allocuteUR返回的结果直接遍历输出即可
修正后代码
from Scheduler import Scheduler class MaxSNR(Scheduler): def allocuteUR(self, mapMobileMkn, tailleFrequence=1): # 存储每个索引位置对应的最大键 result = [] # 遍历每个索引位置 for idx in range(tailleFrequence): # 对当前索引,找对应值最大的键 max_key = max(mapMobileMkn.keys(), key=lambda k: mapMobileMkn[k][idx]) result.append(max_key) return result if __name__ == "__main__": m = MaxSNR() res_list = m.allocuteUR({'patrick': [40, 5], 'michel': [8, 3], 'edgard': [1, 10]}, tailleFrequence=2) for name in res_list: print(name)
运行结果
patrick edgard
内容的提问来源于stack exchange,提问作者Math63
相关产品推荐
相关产品推荐

