python - 如何以嵌套的 dict 格式对值进行排序?
问题描述
我目前有一个带有 key: 的字典string
,而 values 是另一个字典dict
。
如何按内部字典中的值排序?(我想按数字排序,14、8、2等)
示例字典data
:
{
"00": {
"057fa729df76467eac31febae7c3d0587ab1db327eb4c9532ebbd63b3273df4d.json": 14,
"067d2aaa8a300407c4b54f67c1fbb6c96aa3fe5ac8b71877e32636e5c0c5efe8.json": 2,
"0d18dc8d9bf832afd01788bae9922d66a77acd7aa2ac07a1b292cb59c440345e.json": 8,
},
"000": {
"02793d53bc9ed92d33207b0bbd03a63fffdf091ba98b2a1607242551ec850c88.json": 1,
"02a606bed4864c58a78b1f1f60a7a8e6f297975c35ac889aaf717b205918cf57.json": 1,
"03a735ca0ba08089106f1601ca391c34cdfbe0ec9b266fd66cc46f37c8f554de.json": 2,
}
}
预期输出:
按数字排序后,它从最大到最小打印它(格式不必是这样的,但你明白了):
"057fa729df76467eac31febae7c3d0587ab1db327eb4c9532ebbd63b3273df4d.json": 14,
"0d18dc8d9bf832afd01788bae9922d66a77acd7aa2ac07a1b292cb59c440345e.json": 8,
"067d2aaa8a300407c4b54f67c1fbb6c96aa3fe5ac8b71877e32636e5c0c5efe8.json": 2,
我的尝试:
当键匹配“00”时,它将打印出该键中的所有值:值对。
for key, value in data.items()
for k, v in sorted(value.items(), lambda x: x[1]):
if key == "00":
print(key)
解决方案
像这样:
In [298]: my_dict = {}
In [299]: for key,value in data.items():
...: my_dict[key] = {k: v for k, v in sorted(value.items(), key=lambda item: item[1], reverse=True)}
...:
In [300]: my_dict
Out[300]:
{'00': {'057fa729df76467eac31febae7c3d0587ab1db327eb4c9532ebbd63b3273df4d.json': 14,
'0d18dc8d9bf832afd01788bae9922d66a77acd7aa2ac07a1b292cb59c440345e.json': 8,
'067d2aaa8a300407c4b54f67c1fbb6c96aa3fe5ac8b71877e32636e5c0c5efe8.json': 2},
'000': {'03a735ca0ba08089106f1601ca391c34cdfbe0ec9b266fd66cc46f37c8f554de.json': 2,
'02793d53bc9ed92d33207b0bbd03a63fffdf091ba98b2a1607242551ec850c88.json': 1,
'02a606bed4864c58a78b1f1f60a7a8e6f297975c35ac889aaf717b205918cf57.json': 1}}
或者,您可以使用nested dict comprehension
:
In [305]: {key: {k: v for k, v in sorted(value.items(), key=lambda item: item[1], reverse=True)} for key,value in data.items()}
Out[305]:
{'00': {'057fa729df76467eac31febae7c3d0587ab1db327eb4c9532ebbd63b3273df4d.json': 14,
'0d18dc8d9bf832afd01788bae9922d66a77acd7aa2ac07a1b292cb59c440345e.json': 8,
'067d2aaa8a300407c4b54f67c1fbb6c96aa3fe5ac8b71877e32636e5c0c5efe8.json': 2},
'000': {'03a735ca0ba08089106f1601ca391c34cdfbe0ec9b266fd66cc46f37c8f554de.json': 2,
'02793d53bc9ed92d33207b0bbd03a63fffdf091ba98b2a1607242551ec850c88.json': 1,
'02a606bed4864c58a78b1f1f60a7a8e6f297975c35ac889aaf717b205918cf57.json': 1}}
推荐阅读
- c# - 向目标对象平滑旋转对象
- android - 有没有办法在 Kotlin 中使用 coroutines/Flow/Channels 实现这个 rx 流?
- cypress - 赛普拉斯测试运行程序不呈现 Blockly 类别
- python - 如何将文件从云存储复制到其他云?例如,Google Drive 到 OneDrive
- java - 我想知道如何将一组字符串类型的数组列表添加到数组列表中
- php - 查看类别的帖子
- google-maps - 如何从 markerCluster 中删除一个标记
- java - 如何告诉自定义适配器使用我的类列表而不是填充\添加项目?
- php - 如何在 ampify_img 函数中获取图像的 src
- amazon-ec2 - 停用 AWS EKS 主服务器?