如何在存储图片尺寸的字典中查找最大宽度或按宽度排序?
解决方案:按图片宽度排序字典 & 找出最大宽度
首先,你已经成功获取了图片路径与对应宽高的字典size_images,接下来咱们来实现你需要的两个功能:
一、找出字典中图片的最大宽度
你可以利用Python内置的max()函数,通过指定key参数提取每个字典项的宽度值进行比较,不仅能拿到最大宽度值,还能直接获取对应图片的信息:
# 获取最大宽度值 max_width = max(v['width'] for v in size_images.values()) print(f"最大宽度值:{max_width}") # 获取所有拥有最大宽度的图片(可能存在多个) max_width_images = [(k, v) for k, v in size_images.items() if v['width'] == max_width] print("拥有最大宽度的图片:") for img_name, img_size in max_width_images: print(f"{img_name} --> {img_size}")
针对你的示例输出,运行这段代码会得到:
最大宽度值:4288 拥有最大宽度的图片: ISIC_0013581.jpg --> {'width': 4288, 'heigth': 2848} ISIC_0014127.jpg --> {'width': 4288, 'heigth': 2848} ISIC_0013861.jpg --> {'width': 4288, 'heigth': 2848}
二、按图片宽度对字典进行排序
在Python 3.7及以上版本中,字典是有序的,你可以使用sorted()函数对字典的项进行排序,通过key参数指定按宽度排序,支持正序(从小到大)和倒序(从大到小):
1. 按宽度从小到大排序
# 按宽度正序排序,返回有序字典 sorted_by_width_asc = dict(sorted(size_images.items(), key=lambda item: item[1]['width'])) # 打印排序后的结果 print("按宽度从小到大排序:") for k, v in sorted_by_width_asc.items(): print(f"{k} --> {v}")
2. 按宽度从大到小排序
只需要在sorted()里添加reverse=True参数即可:
# 按宽度倒序排序 sorted_by_width_desc = dict(sorted(size_images.items(), key=lambda item: item[1]['width'], reverse=True)) print("按宽度从大到小排序:") for k, v in sorted_by_width_desc.items(): print(f"{k} --> {v}")
针对你的示例输出,倒序排序后的结果会是:
按宽度从大到小排序: ISIC_0013581.jpg --> {'width': 4288, 'heigth': 2848} ISIC_0014127.jpg --> {'width': 4288, 'heigth': 2848} ISIC_0013861.jpg --> {'width': 4288, 'heigth': 2848} ISIC_0013832.jpg --> {'width': 3008, 'heigth': 2000} ISIC_0001140.jpg --> {'width': 1936, 'heigth': 1936} ISIC_0011130.jpg --> {'width': 1024, 'heigth': 768} ISIC_0000169.jpg --> {'width': 722, 'heigth': 542}
小提示
注意到你代码里的拼写错误:heigth应该是height,虽然不影响当前功能,但建议修正,避免后续维护时产生混淆~
内容的提问来源于stack exchange,提问作者Sarah K
相关产品推荐
相关产品推荐

