我有一些代码可以根据时间戳对dict排序,该值可以正常工作。
我原来未排序的dict的键是升序(1、2、3 ...)的整数
我的字典看起来像这样:
{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 最有效地做到这一点。
谢谢。
答案 0 :(得分:0)
如果您不需要原始键,只需使用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)}