SortedDict:python中的按值排序

2024-04-19 17:36:13 发布

您现在位置:Python中文网/ 问答频道 /正文

SortedDict是一个从dictionary继承的类,它始终按键对元素排序。我们还可以指定它按键的某个函数排序,如下所示。你知道吗

def func(x):
    return -x

sd = SortedDict(func)

不过,我想让它按字典的值排序。 例如:

d = {0:[34, 67, 3],1:[12, 4, 9],2:[25, 3, 1]}

我希望它按每个数组的第一个元素排序,这样我就有了一个排序的dict,如下所示:

sd = {1:[12, 4, 9],2:[25, 3, 1],0:[34, 67, 3]}

我有办法做到吗?如果我做了以下事情:

def func(x):
   return d[x][0]

这不是一个永久的解决方案,因为如果我更新我的排序字典:

sd.update({4:[6,5,9]})

我从原来的字典里得到一个关键错误。你知道吗

我需要一种方法让函数访问sd本身中键的值。这可能吗?你知道吗


Tags: 函数元素dictionaryreturn字典排序def数组
1条回答
网友
1楼 · 发布于 2024-04-19 17:36:13

我相信你不能订字典。如果您想保持键的顺序,可以使用键位于第一个或最后一个位置的数组。可以使用sorted函数对字典进行排序,但它不会按顺序返回dictionary对象

d = {0:[34, 67, 3],1:[12, 4, 9],2:[25, 3, 1]}
d_sorted = sorted(d.items(), key=lambda kv: kv[1][0])

它回来了

[(1, [12, 4, 9]), (2, [25, 3, 1]), (0, [34, 67, 3])]

相关问题 更多 >