我有一个带有宽度和高度的图像字典,我想根据它们的宽度对它们进行排序,或者只是找到字典值中的最大宽度。 谢谢你的帮助。
以下是代码:
ISIC_0011130.jpg --> {'width': 1024, 'heigth': 768}
ISIC_0013581.jpg --> {'width': 4288, 'heigth': 2848}
ISIC_0013832.jpg --> {'width': 3008, 'heigth': 2000}
ISIC_0014127.jpg --> {'width': 4288, 'heigth': 2848}
ISIC_0013861.jpg --> {'width': 4288, 'heigth': 2848}
ISIC_0000169.jpg --> {'width': 722, 'heigth': 542}
ISIC_0001140.jpg --> {'width': 1936, 'heigth': 1936}
输出:
ngZone.run
答案 0 :(得分:2)
如果要创建具有所需顺序的新dict,可以从排序原始dict项目的结果中创建OrderedDict
。 OrderedDict
按照插入顺序存储其项目(而内置的dict没有内部排序)。
from collections import OrderedDict
newDict = OrderedDict(sorted(oldDict.items(), key=lambda x: x[1]['width']))
largest = list(newDict.items())[-1]
# {'ISIC_0013861.jpg', {'width': 4288, 'heigth': 2848})
答案 1 :(得分:0)
按升序高度打印图像:
for k, v in sorted(size_images.items(), lambda kv: kv[1]['height']):
print (k, '-->', v)
答案 2 :(得分:0)
最大宽度
将max
与生成器表达式一起使用:
max_width = max(v['width'] for v in size_images.values()}
按宽度排序
将sorted
与自定义键一起使用:
sorted_list = sorted(sizes_images.items(), key=lambda x: x[1]['width'])
请注意,这将输出元组列表,按宽度最小排序。添加reverse=True
以从最大的开始。