首页 > 解决方案 > 如何使用 Python 对以数字文件名作为键的 JSON 文件名进行排序?

问题描述

我有一个 JSON 文件,其中包含文件名和每个描述作为键值对。但是,当我尝试对文件进行排序时,使用 OrderedDict 会产生 0.jpg 1.jpg 10.jpg 11 ..... 2 20 等顺序。

op={int(k) : v for k, v in output.items()}

我尝试这样做,但它返回一个 ValueError。错误如下

ValueError: int() 以 10 为底的无效文字:'1520.png'

标签: pythonjsonsorting

解决方案


OrderedDict(sorted(output.items(), key=lambda item: int(item[0].split('.')[0])))

例子

output = {f'{i}.jpg': None for i in reversed(range(21))}

od = OrderedDict(sorted(output.items(), key=lambda item: int(item[0].split('.')[0])))

输出:

OrderedDict([('0.jpg', None),
             ('1.jpg', None),
             ('2.jpg', None),
             ('3.jpg', None),
             ('4.jpg', None),
             ('5.jpg', None),
             ('6.jpg', None),
             ('7.jpg', None),
             ('8.jpg', None),
             ('9.jpg', None),
             ('10.jpg', None),
             ('11.jpg', None),
             ('12.jpg', None),
             ('13.jpg', None),
             ('14.jpg', None),
             ('15.jpg', None),
             ('16.jpg', None),
             ('17.jpg', None),
             ('18.jpg', None),
             ('19.jpg', None),
             ('20.jpg', None)])

推荐阅读