python - 创建新字典以首先对键进行排序,然后对值进行排序

标签 python dictionary

据我所知,这是惯性排序的。我正在尝试制作一个新字典,该字典按“键”的字母顺序排序,然后对元组中最后一个元素的值进行排序。

当前词典:

D1 = {'Lakers': [('James','PG',23,2), ('Davis', 'PF', 3, 3), ('Johnson', 'PG', 33, 
1)], 'Pistons': [('Billips', 'PG', 1, 1 ), ('Wallace', 'C', 3, 3)], 'Hawks': 
[('Young', 'PG', 11, 1), ('Collins', 'PF', 3, 2)] }

我想要的字典:

New_D1 = { 'Hawks':[('Collins', 'PF', 3, 2),('Young', 'PG', 11, 1)], 'Lakers': [('Davis', 'PF', 3, 3),('James','PG',23,2), ('Johnson', 'PG', 33, 1)], 'Pistons': [('Wallace', 'C', 3, 3),('Billips', 'PG', 1, 1 ) ] }

我当前的排序代码是:

New_D1  = dict(sorted(D1.items()))

这会创建一个新字典(New_D1)并且仅对键进行排序。我现在需要对元组列表的最后一个元素中的值进行排序。

最佳答案

您可以将其作为您已经在做的排序之上的理解:

>>> {k: sorted(v, key=lambda t: -t[-1]) for k, v in sorted(D1.items())}
{'Hawks': [('Collins', 'PF', 3, 2), ('Young', 'PG', 11, 1)], 'Lakers': [('Davis', 'PF', 3, 3), ('James', 'PG', 23, 2), ('Johnson', 'PG', 33, 1)], 'Pistons': [('Wallace', 'C', 3, 3), ('Billips', 'PG', 1, 1)]}

关于python - 创建新字典以首先对键进行排序,然后对值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61700486/

相关文章:

python - 如何将 models.py 拆分为 Pyramid 中不同模型的不同文件?

python - 如何在 python 中访问 wmi?

python - python中的深度优先算法不起作用

python - pandas groupby datetime.date 对象不一致

python - 在 Python 中使用 beautifulsoup 从多个 HTML 类中抓取 Web 数据的困难

Python:如何提取字典条目的变量名?

java - 如何将 "Pair"或 n 大小插入列表集合而不是组成 HashMap?

python - 行作为字典 - pymssql

javascript - ECMAScript 6 Map & Set - 在迭代过程中可以安全删除吗?

perl - 为什么map返回一个空数组?