python-3.x - 排序字典时重写字典键
问题描述
我有一些代码可以根据时间戳对字典进行排序,该值可以正常工作。
我原来的未排序字典的键是按升序排列的整数 (1, 2, 3...)
我的 dict 看起来与此类似:
{1: {'pkt_no': '127', 'timestamp': 1563841184.505932}, 2: {'pkt_no': '128', 'timestamp': 1563841184.506147}}
我正在使用以下代码对字典进行排序:
sorted_packets = sorted(stream['packets'].items(), key=lambda x: x[1]['timestamp'])
排序后,键按其他顺序排列,例如 1、2、4、5、3、6... 等。
我想更新/重写排序字典中的所有键,以便它们再次按升序排列(从 1 开始),而实际项目仍保持新排序的顺序。
如何使用Python 3.7.3最有效地做到这一点。
谢谢。
解决方案
如果您不需要原始键,只需使用values
- 那么只需从值及其索引构建一个新的字典(您可以使用enumerate(seq, [start=0])
:
src = {1: {'pkt_no': '127', 'timestamp': 1563841184.505932}, 2: {'pkt_no': '128', 'timestamp': 1563841184.506147}}
sorted_vals = sorted(src.values(), key=lambda x: x['timestamp'])
result = {i:v for i, v in enumerate(sorted_vals, 1)}
推荐阅读
- react-native - 如何创建地图视图
- python - 不小心跑了 git clean -d -f 需要找回python3.7
- mysql - 与最新的连接查询记录分组
- javascript - 在字典列表中列出值
- node.js - 如何解决:不支持选项 [servers] 不支持选项 [caseTranslate]
- python - 字节/字典到数据帧
- android - LoaderManager 抛出不兼容类型错误
- angular - 当我使用命令 ng new myprojectname 以角度创建新项目时出现此错误
- .htaccess - 我想替换 url 使用 htaccess
- postgresql - 在 PGAdmin4 中的数据库之间切换