首页 > 解决方案 > 如何使用项目的子值对嵌套的python字典进行排序

问题描述

如何按子值对嵌套的python字典项进行排序并按降序保存该字典项

描述字典:

排序前

my_dict = {
    "Bob": {"Buy": 25, "Sell": 33, "Quantity": 100},
    "Moli": {"Buy": 75, "Sell": 53, "Quantity": 300},
    "Annie": {"Buy": 74, "Sell": 83, "Quantity": 96},
    "Anna": {"Buy": 55, "Sell": 83, "Quantity": 154},
}

我想按子值(即“数量”)对字典项进行降序排序,输出应该是这样的:

排序后

my_dict={
    "Moli": {"Buy": 75, "Sell": 53, "Quantity": 300},
    "Anna": {"Buy": 55, "Sell": 83, "Quantity": 154},
    "Bob": {"Buy": 25, "Sell": 33, "Quantity": 100},
    "Annie": {"Buy": 74, "Sell": 83, "Quantity": 96},
}

如何在不使用任何功能的情况下做到这一点:

def sort_by_quantity(dic):
    keys = sorted(dic.items(), key=lambda x: x[1]['Quantity']) # list of sorted keys
    return dict((x, y) for x, y in keys) # convert tuple back to dict

或者

sdct = dictt.copy()
def func(d):
    return sdct[d]['Quantity']
dct = sorted(dictt, key=func, reverse=True)
newDict = {i: dictt[i] for i in dct}
print(newDict)

ETC...

我们在 Pandas 数据框中进行排序的方式如下:

df = df1.sort_values('Quantity', ascending=False)

如果有人告诉我该怎么做,我将不胜感激:) :) :)

标签: pythonpython-3.xdictionary

解决方案


试试这个:

my_dict = {
    "Bob": {"Buy": 25, "Sell": 33, "Quantity": 100},
    "Moli": {"Buy": 75, "Sell": 53, "Quantity": 300},
    "Annie": {"Buy": 74, "Sell": 83, "Quantity": 96},
    "Anna": {"Buy": 55, "Sell": 83, "Quantity": 154}
}

sorted_dict = dict( sorted(my_dict.items(), key=lambda v: v[1]['Quantity']) )
print(sorted_dict)

# for reverse
sorted_dict_reversed = dict( sorted(my_dict.items(), key=lambda v: v[1]['Quantity'], reverse=True) )
print(sorted_dict_reversed)

推荐阅读