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

如何在Python字典中仅反转值的顺序而不改变原有键的顺序

Python保留键顺序反转字典值的最优实现

Python 3.7及以上版本的标准字典默认保留插入时的键顺序,低于该版本需使用collections.OrderedDict保证键顺序,实现逻辑一致。

核心最简实现

核心逻辑为直接提取原有顺序的键序列、反转值序列后重新配对,时间复杂度为O(n),是效率最高的实现:

dictionnary = {'a': 3, 'b': 2, 'c': 1}
# 直接生成反转值的新字典,不修改原字典
inversed_values = dict(zip(dictionnary.keys(), reversed(dictionnary.values())))
print(inversed_values)
# 输出:{'a': 1, 'b': 2, 'c': 3}

实现自定义reverseValues()方法

如果需要和示例中一致通过字典方法调用,可以继承原生dict实现子类:

class CustomDict(dict):
    def reverseValues(self):
        """返回值顺序反转、键顺序不变的新字典"""
        return CustomDict(zip(self.keys(), reversed(self.values())))

# 使用示例
dictionnary = CustomDict({'a': 3, 'b': 2, 'c': 1})
inversed_values = dictionnary.reverseValues()
print(inversed_values)
# 输出:{'a': 1, 'b': 2, 'c': 3}

注意事项

  • 上述实现默认返回新字典,不会改动原字典内容,如果需要原地修改原字典,可以遍历键按索引赋值:
vals = list(dictionnary.values())
vals_reversed = vals[::-1]
for idx, k in enumerate(dictionnary.keys()):
    dictionnary[k] = vals_reversed[idx]
  • 3.6及更低版本Python请使用collections.OrderedDict替换示例中的原生dict,逻辑完全一致。

内容的提问来源于stack exchange,提问作者Ramanujan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:24:05