You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python字典按值排序后如何重新分配升序索引

Python字典按值排序后如何重新分配升序索引

看起来你想要的不是保留原字典的键,而是把排序后的值重新绑定从1开始的连续升序索引对吧?我来给你捋捋怎么实现~

你之前的做法是把原字典的键值对按值排序,结果里还带着原来的键(比如3、1这些),哪怕用OrderedDict也只是保留了这个排序后的键值对顺序,并没有替换成新的索引。

要得到你想要的[(1,4),(2,6),(3,8),(4,10)],核心是抛弃原键,把排序后的值和从1开始的连续整数一一配对,具体可以这样写:

nums = {1:6, 2:10, 3:4, 4:8} 

# 第一步:提取所有值并排序
sorted_values = sorted(nums.values())
# 第二步:用从1开始的索引和排序后的值配对
result = [(i+1, val) for i, val in enumerate(sorted_values)]

print(result)  # 输出 [(1, 4), (2, 6), (3, 8), (4, 10)]

如果你觉得列表推导式不够直观,用zip配合range也能达到同样效果:

nums = {1:6, 2:10, 3:4, 4:8} 

# 生成从1到字典长度的连续整数,和排序后的值配对
result = list(zip(range(1, len(nums)+1), sorted(nums.values())))

print(result)  # 同样得到 [(1, 4), (2, 6), (3, 8), (4, 10)]

简单说就是先把原字典里的值单独拿出来排序,再给它们配上新的、从1开始的升序索引,这样就完全符合你的需求啦~

备注:内容来源于stack exchange,提问作者Tim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 12:34:31