按引用对字典进行排序?(Python 3.10)

Sort Dictionary by Reference? (Python 3.10)

提问人:Runsva 提问时间:6/26/2023 更新时间:6/26/2023 访问量:144

问:

我正在尝试在 Python 中按升序对字典进行排序。我正在尝试在函数中执行此操作,并将字典作为参数提供。

我知道 Python 中有可变和不可变的数据类型,并且我知道字典应该是可变的数据类型。也就是说,在将其作为函数参数提供时,我应该能够通过引用传递它。

通常,我会使用这种方法,但是在通过引用提供字典时似乎不起作用。dict(sorted(d.items()))

下面是一个示例:

def CreateDict(d):
    d[0] = "a"
    d[4] = "b"
    d[2] = "c"
    d[1] = "d"

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

def main():
    d = {}

    print(d)
    CreateDict(d)
    print(d)
    SortDict(d)
    print(d)

if (__name__ == '__main__'):
    main()

我在函数的字典中添加了一些元素,并尝试在函数中对其进行排序。但是,我得到的输出如下:dCreateDictSortDict

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

即使在调用 .dSortDict

当作为函数参数通过引用提供时,对 Python 字典进行排序的正确方法是什么?

感谢您阅读我的帖子,任何指导都是值得赞赏的。

Python 字典 排序 按引用传递

评论

1赞 wim 6/26/2023
Python 中没有“按引用传递/按值传递”这样的东西。以这种方式思考只会让你感到困惑。
0赞 Kelly Bundy 6/26/2023
你为什么不直接退货呢?
0赞 Julien 6/26/2023
尽管它们在实践中可以存在,但字典在概念上是没有顺序的,如果您需要对字典进行排序,您可能希望使用不同的数据结构......

答:

3赞 Kelly Bundy 6/26/2023 #1

当作为函数参数通过引用提供时,对 Python 字典进行排序的正确方法是什么?

我会说这是返回新字典,并让调用者使用返回值。

但是,如果您坚持修改现有的字典,这里有以下几种方法:

def SortDict(d):
    items = sorted(d.items())
    d.clear()
    d |= items

def SortDict(d):
    for k in sorted(d):
        d[k] = d.pop(k)

def SortDict(d):
    k = sorted(d)
    d |= zip(k, map(d.pop, k))