如何将Python字典的键重置为从1开始的连续升序整数
实现代码
你可以通过对原字典的键升序排序后重新生成新字典实现,Python 3.7及以上版本(字典默认保留插入顺序)可直接使用以下代码:
project = { 5: {"name:Mark"}, 1: {"name:Mark"}, 3: {"name:Mark"}, 4: {"name:Kim"}, 2: {"name:Kim"}, } # 核心逻辑:按原键升序排列后,生成新的连续键字典 project = {idx: val for idx, (_, val) in enumerate(sorted(project.items()), start=1)}
逻辑说明
- 首先调用
sorted(project.items()),默认会按键的升序对原字典的所有键值对排序,得到的顺序就是你需要保留的取值顺序 - 用
enumerate(..., start=1)遍历排序后的键值对,直接把从1开始的索引作为新字典的键,原键值对的value作为新字典的值,最终得到的就是符合要求的结果
结果验证
执行后打印project即可得到目标结构:
{ 1: {'name:Mark'}, 2: {'name:Mark'}, 3: {'name:Mark'}, 4: {'name:Kim'}, 5: {'name:Kim'} }
如果你使用的是Python 3.7以下的版本,需要导入collections.OrderedDict来保证顺序,代码如下:
from collections import OrderedDict project = OrderedDict( (idx, val) for idx, (_, val) in enumerate(sorted(project.items()), start=1) )
内容的提问来源于stack exchange,提问作者Tawan Patchaya
相关产品推荐
相关产品推荐

