python中的遍历问题
一个列表中有若干字典,想要获得此列表中所有字典中 值最大的那个键值对,列如:
lists = [{'E:\\Ocr_Script\\output\\0.jpg': 2.4812737855250466}, {'E:\\Ocr_Script\\output\\1.jpg': 2.4983475018536607}, {'E:\\Ocr_Script\\output\\10.jpg': 1.73854450704711}, {'E:\\Ocr_Script\\output\\11.jpg': 1.7360435522762336}]
该列表中值最大 (value=2.4983475018536607) 的字典为 {'E:\Ocr_Script\output\1.jpg': 2.4983475018536607},获取最大值的键为 key=E:\Ocr_Script\output\1.jpg 想要一种效率高又节省资源的方法?也许使用列表推导式的思路?
如果列表中的每个字典都只有一个键值对,就像你给出的例子那样,直接使用max函数就可以了
print(*max(lists,key=lambda x:list(x.values())).keys())
如果字典中还存在多个键值对,还需要对字典进行排序,也可以使用嵌套max
print(max(max(lists,key=lambda x:max(x.values())).items(),key=lambda x:x[1])[0])
你该遍历就遍历
想效率高一开始就不应该把数据按这样方式组织
既然已经这样组织了,遍历一下也就出结果了
列表推导式只是看起来代码长度变短了
但是如果你的逻辑非常复杂,那么虽然只有一行,代码却会非常长,不利于阅读,可读性会变得非常差
如果你有一堆这样的对象都需要处理,那你可以封装个函数反复调用,而不是一遍一遍的粘贴
你要先把键名统一啊,比如:{'key':'xxx.jpg', 'value':123456},这样才能排序。然后你可以参考:https://blog.csdn.net/m0_37928761/article/details/122573798