如何将存在缺失整数键的字典转换为连续整数键字典?
字典键重新分配实现方案
需求说明
原字典:
listofvirtues={1: 'Flexibility', 2: 'Authenticity', 4: 'Idealism', 5: 'Compassion', 8:'Consideration'}
期望结果:
{1: 'Flexibility', 2: 'Authenticity', 3: 'Idealism', 4: 'Compassion', 5:'Consideration'}
核心需求:将原字典的值按原整数键升序排列后,重新分配从1开始的连续整数键。
实现方案
步骤说明
- 提取原字典的键值对,按原键升序排序
- 为排序后的值分配从1开始的连续整数键
代码实现
listofvirtues={1: 'Flexibility', 2: 'Authenticity', 4: 'Idealism', 5: 'Compassion', 8:'Consideration'} # 按原键升序排序键值对 sorted_items = sorted(listofvirtues.items(), key=lambda x: x[0]) # 生成新字典,键从1开始连续递增 new_dict = {i+1: item[1] for i, item in enumerate(sorted_items)} print(new_dict)
代码解释
sorted(listofvirtues.items(), key=lambda x: x[0]):把字典的键值对转为列表,通过lambda x: x[0]指定按原键(元组第一个元素)升序排序。{i+1: item[1] for i, item in enumerate(sorted_items)}:用字典推导式生成新字典,enumerate获取排序后列表的索引(从0开始),索引加1作为新键,对应的值保留排序后的原字典值。
运行代码后即可得到目标格式的字典。
内容的提问来源于stack exchange,提问作者Une
相关产品推荐
相关产品推荐

