[英]keep keys of dictionary while sorting the values
我有以下排序功能:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.