簡體   English   中英

在對值進行排序時保留字典的鍵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM