繁体   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