嵌套字典按子字典中的值排序,然后按子字典的长度排序
Nested dictionary sorting by values in sub dictionary and then length of subdictionary
作为新手,我正在努力解决嵌套字典的排序问题。可以说我有这两个嵌套字典作为示例:
示例 1:
{'Red': {'Pesho': 2000}, 'Blue': {'Tosho': 1000}, 'Green': {'Gosho': 1000}, 'Yellow': {'Sasho': 4500}, 'Stamat': {'Prakasho': 1000}}
示例 2:
{'Red': {'Pesho': 10000}, 'Blue': {'Pesho': 10000, 'Gosho': 10000}}
现在我需要按分数降序对球员进行排序,然后再次按每个 team/color 中的球员总数进行降序排序。打印输出应如下所示:
例如1:
(黄色)Sasho <-> 4500
(红色)比绍 <-> 2000
(蓝色)东胜 <-> 1000
(绿色) Gosho <-> 1000
(Stamat) Prakasho <-> 1000
例如2:
(蓝色)比索 <-> 10000
(蓝色) Gosho <-> 10000
(红色)比索 <-> 10000
我想这可以通过使用 lambda 的 sorted() 来完成,但我无法理解确切的语法。将非常感谢任何提示。
我会先通过一个中间表示来关联元素所属组的大小,以便在排序中使用它。
>>> l2 = [(k,el,d[k][el],len(v)) for k,v in d.items() for el in v]
>>> l2
[('Red', 'Pesho', 10000, 1), ('Blue', 'Pesho', 10000, 2), ('Blue', 'Gosho', 10000, 2)]
然后使用 lambda 函数排序,其中使用了 2 个比较项 (score, size of group)
。
>>> sorted(l2, key=lambda x:(int(x[2]),x[3]),reverse=True)
[('Blue', 'Pesho', 10000, 2), ('Blue', 'Gosho', 10000, 2), ('Red', 'Pesho', 10000, 1)]
作为新手,我正在努力解决嵌套字典的排序问题。可以说我有这两个嵌套字典作为示例:
示例 1:
{'Red': {'Pesho': 2000}, 'Blue': {'Tosho': 1000}, 'Green': {'Gosho': 1000}, 'Yellow': {'Sasho': 4500}, 'Stamat': {'Prakasho': 1000}}
示例 2:
{'Red': {'Pesho': 10000}, 'Blue': {'Pesho': 10000, 'Gosho': 10000}}
现在我需要按分数降序对球员进行排序,然后再次按每个 team/color 中的球员总数进行降序排序。打印输出应如下所示:
例如1:
(黄色)Sasho <-> 4500
(红色)比绍 <-> 2000
(蓝色)东胜 <-> 1000
(绿色) Gosho <-> 1000
(Stamat) Prakasho <-> 1000
例如2:
(蓝色)比索 <-> 10000
(蓝色) Gosho <-> 10000
(红色)比索 <-> 10000
我想这可以通过使用 lambda 的 sorted() 来完成,但我无法理解确切的语法。将非常感谢任何提示。
我会先通过一个中间表示来关联元素所属组的大小,以便在排序中使用它。
>>> l2 = [(k,el,d[k][el],len(v)) for k,v in d.items() for el in v]
>>> l2
[('Red', 'Pesho', 10000, 1), ('Blue', 'Pesho', 10000, 2), ('Blue', 'Gosho', 10000, 2)]
然后使用 lambda 函数排序,其中使用了 2 个比较项 (score, size of group)
。
>>> sorted(l2, key=lambda x:(int(x[2]),x[3]),reverse=True)
[('Blue', 'Pesho', 10000, 2), ('Blue', 'Gosho', 10000, 2), ('Red', 'Pesho', 10000, 1)]