Python中如何按Line number对文件字典进行升序排序?
简洁实现代码
可以利用Python的sorted()函数结合f-string格式化来简化代码,实现需求:
files = {'1.txt': [{'Line number': 1, 'file number': 1}, {'Line number': 2, 'file number': 1}], '2.txt': [{'Line number': 1, 'file number': 2}] } # 按文件总行数升序排序文件条目 sorted_files = sorted(files.items(), key=lambda x: len(x[1])) for filename, lines in sorted_files: print(filename) print(f'total lines {len(lines)}') # 若原始文件内的行已按Line number有序,可省略内层sorted for line in sorted(lines, key=lambda x: x['Line number']): print(f"Line number {line['Line number']} file number {line['file number']}")
代码说明:
- 用
sorted(files.items(), key=lambda x: len(x[1]))一步完成按文件总行数的升序排序,逻辑清晰直接。 - 用f-string快速格式化输出内容,避免繁琐的字符串拼接,代码简洁易读。
- 内层的
sorted(lines, ...)用于兼容行数据无序的场景,若原始数据里每个文件的行已经按Line number排序,可直接去掉这一步进一步简化代码。
内容的提问来源于stack exchange,提问作者This_guy
相关产品推荐
相关产品推荐

