python - 如何使用项目的子值对嵌套的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)
如果有人告诉我该怎么做,我将不胜感激:) :) :)
解决方案
试试这个:
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)
推荐阅读
- java - 将地图添加到列表中。循环列表时创建地图
- jquery - 从 URL 中获取变量
- sql-server - 如何写入 TADOQuery 中的查找字段?
- websphere-liberty - 将应用程序部署到 IBM Liberty Profile 时执行 CICS 请求时出错
- c++ - C++:实例化库中的许多模板
- java - 如何为弹出窗口提供弯曲边缘并为弹出窗口提供明显的阴影
- python - 在子目录中工作时如何正确导入模块?
- mysql - MySQL REGEX 将 json 转换为逗号分隔的键以在 WHERE IN 中使用
- python - How to get values in TensorArray which contain vary shape tensors
- java - getURLForResource() 的包含文件是什么?