簡體   English   中英

按列表中的順序對字典排序(python)

[英]Sort Dict by order in list (python)

我正在嘗試將dict轉換為有序df dict表示一個scatter plot ,顯示各個bins的坐標。

可以說x,y lists如下:

x = [10,40,33,44,66,77,33,44,55,2]
y = [1,4,53,34,56,47,83,44,25,12]

我將坐標分類到適當的bin中,輸出為:

bins =({
        1: [(10, 1), (2, 12)], 
        2: [(40, 4), (33, 53), (44, 34), (33, 83), (44, 44)], 
        3: [(66, 56), (55, 25)], 
        4: [(77, 47)]
        })

如果我轉換為df:

df = pd.DataFrame.from_dict(bins, orient = 'index')
d = df.transpose()

輸出:

         1         2         3         4
0  (10, 1)   (40, 4)  (66, 56)  (77, 47)
1  (2, 12)  (33, 53)  (55, 25)      None
2     None  (44, 34)      None      None
3     None  (33, 83)      None      None
4     None  (44, 44)      None      None

我希望做的是按list中的順序對df進行排序,因此我希望輸出為:

         1          2        3        4
0   (10, 1)         
1              (40, 4)      
2             (33, 53)          
3             (44, 34)      
4                               (66, 56)
5                               (77, 47)
6             (33, 83)      
7             (44, 44)      
8                      (55, 25) 
9   (2, 12)         

我不確定是否可以做到。 因此,我正在考慮嘗試返回每個索引處每個散點的箱號:

   Bin
0    1
1    2
2    2
3    2
4    4
5    4
6    2 
7    2
8    3
9    1

我已經嘗試過collections.OrderedDict但是我需要按索引而不是keys排序。

我不確定是否可以將輸入內容設為列表列表?

跳過熊貓部分

b = collections.OrderedDict(bins) #Resort by order in list

collections.OrderedDict不對構造函數中給定的值進行排序。 它只是保留了字典創建的順序。

如果您需要對字典進行重新排序並保留其順序,則需要對垃圾箱進行排序(根據您的要求),然后將其傳遞給已排序的字典

舉個例子; 如果您想對鑰匙上的bins進行分類,

b = collections.OrderedDict()
for k in sorted(bins):
    b[k] = bins[k]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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