python - 按值对包含字典列表的字典进行排序
问题描述
我有以下格式的字典:
{"key1": [{"title":"bla bla", "percentage": "0.3493"},{"title":"bla bla bla", "percentage":"0.293"}],
"key2": [{"title":"bla bla", "percentage": "0.635"},{"title":"bla bla bla", "percentage":"0.987"}]}
所以基本上它是一个包含字典列表作为值的字典。
我想按百分比字段降序排序 - 所以通过上面的例子我想获得:
{"key1": [{"title":"bla bla", "percentage": "0.3493"},{"title":"bla bla bla", "percentage":"0.293"}],
"key2": [{"title":"bla bla bla", "percentage": "0.987"},{"title":"bla bla", "percentage":"0.635"}]}
我还想获得最高百分比的全球视图。例如:
“key2”:{“title”:“bla bla bla”,“百分比”:“0.987”}
“key2”:{“标题”:“bla bla”,“百分比”:“0.635”}
“key1”:{“标题”:“bla bla”,“百分比”:“0.3493”}
- “key1”:{“标题”:“bla bla bla”,“百分比”:“0.293”}
我已经研究了 Python 中的各种排序方式,但我仍然不确定如何实现这一点。
解决方案
我们将字典中每个键的值列表按键的值percentage
降序排序,然后我们使用字典推导重新创建字典
dct = {"key1": [{"title":"bla bla", "percentage": "0.3493"},{"title":"bla bla bla", "percentage":"0.293"}],
"key2": [{"title":"bla bla", "percentage": "0.635"},{"title":"bla bla bla", "percentage":"0.987"}]}
result = {key: sorted(value, key=lambda x:x['percentage'], reverse=True) for key, value in dct.items()}
print(result)
输出将是
{'key1': [{'title': 'bla bla', 'percentage': '0.3493'},
{'title': 'bla bla bla', 'percentage': '0.293'}],
'key2': [{'title': 'bla bla bla', 'percentage': '0.987'},
{'title': 'bla bla', 'percentage': '0.635'}]}
对于全局视图,我们首先更新内部字典,因此我们在key
那里有属性。然后,我们通过合并所有值列表来创建值的整体列表(全局视图),然后按百分比按降序对它们进行排序
dct = {"key1": [{"title":"bla bla", "percentage": "0.3493"},{"title":"bla bla bla", "percentage":"0.293"}],
"key2": [{"title":"bla bla", "percentage": "0.635"},{"title":"bla bla bla", "percentage":"0.987"}]}
#Update inner dictionaries with the name of the key for each dictionary
for key, value in dct.items():
for v in value:
v.update({'key':key})
global_view = sorted([v for value in dct.values() for v in value], key=lambda x:x['percentage'], reverse=True)
print(global_view)
这里的输出将是
[
{'title': 'bla bla bla', 'percentage': '0.987', 'key': 'key2'},
{'title': 'bla bla', 'percentage': '0.635', 'key': 'key2'},
{'title': 'bla bla', 'percentage': '0.3493', 'key': 'key1'},
{'title': 'bla bla bla', 'percentage': '0.293', 'key': 'key1'}
]
推荐阅读
- android - 从android中的内存中检索最新文件
- python - 类型化元组中的通用参数
- android - 我怎样才能在可组合函数中运行我的逻辑代码 1 次?
- windows - 如何在flutter中从Windows本机打印日志
- java - 使用 LocalDateType 的 @RequestParam 对 RestController 进行单元测试
- mysql - Mysql 无法选择日期时间列
- ipaf - 检查文件是否存在或不使用 PAF
- reactjs - 创建可重用的反应组件
- javascript - 如何将纯 HTML 放入 .jsx (NextJS) 网站?
- c# - Azure API 命中返回 Microsoft.Rest.Azure.CloudException:操作返回无效状态代码“未授权”