【发布时间】:2021-10-01 14:06:11
【问题描述】:
我有以下字典:
Dict = {'1': ['Adam', 27], '2': ['Brad', 31], '3': ['Paul', 19]}
我想按列表中的 int 值升序排序。所以我想要的结果是:
Desired = {'3': ['Paul', 19], '1': ['Adam', 27], '2': ['Brad', 31]}
我正在尝试执行以下操作:
v = sorted(Dict.items(), key=operator.itemgetter([1][1]))
但它不断出错:
v = sorted(Dict.items(), key=operator.itemgetter([1][1]))
IndexError: list index out of range
我不能将使用多个维度的项目传递给 itemgetter 吗?我错过了什么?
谢谢!
【问题讨论】:
-
警告:您可以对字典的项目进行排序,但不能对字典进行排序,因为字典没有排序。这意味着,在你的情况下,
Dict == Desired。您确实排序的是Dict.items(),它不完全是一个列表,但几乎就像一个列表。 -
另外,为了解释错误:python 将
[1][1]解释为一个元素的列表,1,您从中获取第二个元素,因此它抱怨IndexError。这是因为itemgetter没有一些特殊的语法,所以以这种方式提供参数没有意义。最后,还有一个事实,itemgetter只能获取一级深度的项目,而不是你想要的两级。 -
感谢您的澄清和添加有关错误的详细信息。我现在明白了很多!
标签: python python-3.x list sorting dictionary