提问人:Runsva 提问时间:6/26/2023 更新时间:6/26/2023 访问量:144
按引用对字典进行排序?(Python 3.10)
Sort Dictionary by Reference? (Python 3.10)
问:
我正在尝试在 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()
我在函数的字典中添加了一些元素,并尝试在函数中对其进行排序。但是,我得到的输出如下:d
CreateDict
SortDict
{}
{0: 'a', 4: 'b', 2: 'c', 1: 'd'}
{0: 'a', 4: 'b', 2: 'c', 1: 'd'}
即使在调用 .d
SortDict
当作为函数参数通过引用提供时,对 Python 字典进行排序的正确方法是什么?
感谢您阅读我的帖子,任何指导都是值得赞赏的。
答:
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))
评论