python - 在Python中按属性对dict进行排序
问题描述
我想知道如何在 python3 中通过 "col" asc 来订购它。尝试排序和 orderDict。
d = {0: {'m1': 32, 'M1': 174, 'm2': 190, 'M2': 967, 'col': 6, 'cols': [2, 6, 11, 14, 15, 16, 18]},
1: {'m1': 50, 'M1': 580, 'm2': 588, 'M2': 960, 'col': 10, 'cols': [2, 6, 7, 10, 11, 14, 15, 16, 17, 18, 19]},
2: {'m1': 35, 'M1': 595, 'm2': 621, 'M2': 972, 'col': 8, 'cols': [2, 6, 10, 11, 14, 15, 16, 18, 19]},
3: {'m1': 41, 'M1': 85, 'm2': 104, 'M2': 962, 'col': 7, 'cols': [2, 6, 11, 14, 15, 16, 18, 19]},
4: {'m1': 39, 'M1': 293, 'm2': 299, 'M2': 964, 'col': 5, 'cols': [2, 6, 11, 14, 15, 16]},
5: {'m1': 44, 'M1': 192, 'm2': 215, 'M2': 962, 'col': 9, 'cols': [2, 6, 7, 10, 11, 14, 15, 16, 18, 19]},
6: {'m1': 46, 'M1': 238, 'm2': 255, 'M2': 963, 'col': 12, 'cols': [2, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19]},
7: {'m1': 44, 'M1': 721, 'm2': 731, 'M2': 960, 'col': 2, 'cols': [11, 15, 16]},
8: {'m1': 29, 'M1': 826, 'm2': 846, 'M2': 958, 'col': 3, 'cols': [11, 14, 15, 16]},
9: {'m1': 49, 'M1': 525, 'm2': 543, 'M2': 953, 'col': 17, 'cols': [0, 1, 2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]},
10: {'m1': 43, 'M1': 804, 'm2': 827, 'M2': 955, 'col': 1, 'cols': [11, 15]},
11: {'m1': 48, 'M1': 273, 'm2': 291, 'M2': 959, 'col': 14, 'cols': [2, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]},
12: {'m1': 45, 'M1': 767, 'm2': 793, 'M2': 967, 'col': 16, 'cols': [1, 2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]},
13: {'m1': 44, 'M1': 300, 'm2': 311, 'M2': 962, 'col': 19, 'cols': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]},
14: {'m1': 25, 'M1': 119, 'm2': 140, 'M2': 954, 'col': 13, 'cols': [2, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19]},
15: {'m1': 38, 'M1': 389, 'm2': 410, 'M2': 974, 'col': 15, 'cols': [2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]},
16: {'m1': 29, 'M1': 697, 'm2': 714, 'M2': 968, 'col': 0, 'cols': [15]},
17: {'m1': 32, 'M1': 55, 'm2': 65, 'M2': 968, 'col': 18, 'cols': [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]},
18: {'m1': 39, 'M1': 642, 'm2': 660, 'M2': 955, 'col': 4, 'cols': [2, 11, 14, 15, 16]},
19: {'m1': 41, 'M1': 567, 'm2': 578, 'M2': 959, 'col': 11, 'cols': [2, 6, 7, 8, 10, 11, 14, 15, 16, 17, 18, 19]}}
谢谢
解决方案
您可以使用以下命令指定排序键key
:
dict(sorted(d.items(), key=lambda x: x[1]['col']))
输出:
{16: {'m1': 29, 'M1': 697, 'm2': 714, 'M2': 968, 'col': 0, 'cols': [15]},
10: {'m1': 43, 'M1': 804, 'm2': 827, 'M2': 955, 'col': 1, 'cols': [11, 15]},
7: {'m1': 44, 'M1': 721, 'm2': 731, 'M2': 960, 'col': 2, 'cols': [11, 15, 16]},
8: {'m1': 29, 'M1': 826, 'm2': 846, 'M2': 958, 'col': 3, 'cols': [11, 14, 15, 16]},
18: {'m1': 39, 'M1': 642, 'm2': 660, 'M2': 955, 'col': 4, 'cols': [2, 11, 14, 15, 16]},
4: {'m1': 39, 'M1': 293, 'm2': 299, 'M2': 964, 'col': 5, 'cols': [2, 6, 11, 14, 15, 16]},
0: {'m1': 32, 'M1': 174, 'm2': 190, 'M2': 967, 'col': 6, 'cols': [2, 6, 11, 14, 15, 16, 18]},
3: {'m1': 41, 'M1': 85, 'm2': 104, 'M2': 962, 'col': 7, 'cols': [2, 6, 11, 14, 15, 16, 18, 19]},
2: {'m1': 35, 'M1': 595, 'm2': 621, 'M2': 972, 'col': 8, 'cols': [2, 6, 10, 11, 14, 15, 16, 18, 19]},
5: {'m1': 44, 'M1': 192, 'm2': 215, 'M2': 962, 'col': 9, 'cols': [2, 6, 7, 10, 11, 14, 15, 16, 18, 19]},
1: {'m1': 50, 'M1': 580, 'm2': 588, 'M2': 960, 'col': 10, 'cols': [2, 6, 7, 10, 11, 14, 15, 16, 17, 18, 19]},
19: {'m1': 41, 'M1': 567, 'm2': 578, 'M2': 959, 'col': 11, 'cols': [2, 6, 7, 8, 10, 11, 14, 15, 16, 17, 18, 19]},
6: {'m1': 46, 'M1': 238, 'm2': 255, 'M2': 963, 'col': 12, 'cols': [2, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19]},
14: {'m1': 25, 'M1': 119, 'm2': 140, 'M2': 954, 'col': 13, 'cols': [2, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19]},
11: {'m1': 48, 'M1': 273, 'm2': 291, 'M2': 959, 'col': 14, 'cols': [2, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]},
15: {'m1': 38, 'M1': 389, 'm2': 410, 'M2': 974, 'col': 15, 'cols': [2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]},
12: {'m1': 45, 'M1': 767, 'm2': 793, 'M2': 967, 'col': 16, 'cols': [1, 2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]},
9: {'m1': 49, 'M1': 525, 'm2': 543, 'M2': 953, 'col': 17, 'cols': [0, 1, 2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]},
17: {'m1': 32, 'M1': 55, 'm2': 65, 'M2': 968, 'col': 18, 'cols': [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]},
13: {'m1': 44, 'M1': 300, 'm2': 311, 'M2': 962, 'col': 19, 'cols': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]}
}
推荐阅读
- r - 如何通过 API 删除服务器上的数据并在 httr 中删除请求
- typescript - TypeScript 导入使用正确的标志导入 Express 时出错
- verilog - 使用仿真和使用 FPGA 计算处理时间 Verilog
- node.js - nodejs 控制器的 Jest 测试用例失败
- nginx - NGINX - 从非 www 重定向到 wwww
- amazon-web-services - S3 对象已更新但上次修改时间未更改,这怎么可能?
- json - json_encode 添加尖括号 < 到输出
- arrays - 无效值:有效值范围为空:0
- jpa - @SpringBootTest 使用 @Autowired 找不到 Jpa 存储库
- javascript - javascript中的位置验证(识别用户在特定区域)