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

Python 3.10中如何按引用对字典进行排序?

问题出在你在SortDict函数里的赋值操作——d = dict(sorted(d.items()))只是把函数内部的局部变量d指向了一个新的排序后字典,并没有修改传入的原字典对象。

虽然字典是可变类型,参数传递是传对象引用,但当你给局部变量d重新赋值时,它就和外部的字典断开了关联,原字典自然不会有变化。

下面是两种可行的解决方法:

方法一:原地修改原字典

直接在传入的字典对象上进行操作,先保存排序后的键值对,再清空原字典并更新内容:

def SortDict(d):
    # 先获取排序后的键值对,避免清空字典后丢失数据
    sorted_items = sorted(d.items())
    d.clear()
    d.update(sorted_items)

这样修改后,原字典会被直接更新为排序后的状态,调用SortDict(d)后外部的d就会是按键升序排列的。

方法二:返回新字典并在外部替换

如果不想修改原字典,可以让函数返回排序后的新字典,在主函数里重新赋值:

def SortDict(d):
    return dict(sorted(d.items()))

# 在main函数里调用时修改为:
d = SortDict(d)

这种方式更符合函数式编程的风格,不会对原对象产生副作用。

修改后的完整代码(以方法一为例)运行后,输出会变成:

{}
{0: 'a', 4: 'b', 2: 'c', 1: 'd'}
{0: 'a', 1: 'd', 2: 'c', 4: 'b'}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:57:23