Python 3.x 在对值排序时保留字典的键
我有以下排序功能:Python 3.x 在对值排序时保留字典的键,python-3.x,sorting,dictionary,Python 3.x,Sorting,Dictionary,我有以下排序功能: orderedX = np.array(list(to_sort.values()))\ [np.array(list(to_sort.values())).argmax(axis=1).argsort(), :] 但我想改变它,这样orderedX就变成了一个包含to_sort项的字典,而不仅仅是一个值列表。因此,它的排序方式是正确的,但是在进行此操作时,是否有某种方法可以跟踪关键点 to_sort是一个包含键和值的dict,其中每个值都是一个np数组。字典的问题是它们通
orderedX = np.array(list(to_sort.values()))\
[np.array(list(to_sort.values())).argmax(axis=1).argsort(), :]
但我想改变它,这样orderedX就变成了一个包含to_sort项的字典,而不仅仅是一个值列表。因此,它的排序方式是正确的,但是在进行此操作时,是否有某种方法可以跟踪关键点
to_sort是一个包含键和值的dict,其中每个值都是一个np数组。字典的问题是它们通常不保持顺序。即使Python3.6对dict的实现进行了更改,也有人说“不应该依赖这个新实现的顺序保持方面[…]这是另一个详细解释的问题,请特别注意Martijn Pieters的答案 尽管如此,仍然有
集合。orderdict
具有订单保留功能。下面是如何从数据中创建一个具有所需排序的。请注意,我尝试稍微简化排序算法,据我所知,排序算法按中数组的最大值排序,以_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)
你能举一个输入和输出的小例子来说明你要做什么吗?