在对值进行排序时保留字典的键



我有以下排序函数:

orderedX = np.array(list(to_sort.values()))
[np.array(list(to_sort.values())).argmax(axis=1).argsort(), :]

但我想改变它,这样,orderedX 就变成了一个包含to_sort项的字典,而不仅仅是其值的列表。所以它的排序方式是正确的,但是在执行此操作时,我是否也可以跟踪键?

to_sort 是一个包含键和值的字典,其中每个值都是一个 np.array

字典的问题在于它们通常不保持秩序。即使 Python 3.6 对 dict 的实现进行了更改,文档也说"这个新实现的顺序保持方面 [...]不应依赖"。这是另一个详细解释的SO问题,请特别寻找Martijn Pieters的答案。

话虽如此,仍然有collections.OrdererDict确实具有订单保存功能。下面介绍了如何根据数据创建具有所需排序的方法。请注意,我试图稍微简化排序算法,据我所知,它按to_sort的值中数组的最大值排序:

from collections import OrderedDict
ordered = OrderedDict(sorted(to_sort.items(), key=lambda item:np.max(item[1])))

像这样迭代它将为您提供键和值,其值按排序顺序排列:

for key, value in ordered.items():
print(key, value)

最新更新