我有以下排序功能:
orderedX = np.array(list(to_sort.values()))\
[np.array(list(to_sort.values())).argmax(axis=1).argsort(), :]
但是我想改变它,以便,orderedX变成一个包含to_sort项的字典,而不仅仅是它的值列表。因此,它的排序方式是正确的,但是在某种程度上我还可以在执行此操作时跟踪密钥吗?
to_sort是一个带键和值的字典,其中每个值都是np.array
答案 0 :(得分:1)
词典的问题在于它们通常不会保留秩序。即使使用Python 3.6对dict实现的更改,docs也表示"这个新实现的顺序保留方面不应该依赖于" 。 Here另一个问题在于详细解释,特别是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)