排序字典时重写字典键



我有一些代码可以根据时间戳对字典进行排序,该值工作正常。

我原来的未排序字典的键是按升序排列的整数(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 最有效地做到这一点。

谢谢。

如果您不需要原始键,只需使用 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)}

最新更新