我是一位新手Python程序员,目前正在通过解决问题来提高我的编程技能。我正在解决一个问题,需要在Python中对一个字典进行
输入:
我已经将两个列表添加到一个字典中,以便将它们作为键值对。我使用了
预期输出:
稳定排序
。请查看以下详细信息:输入:
1 2
16 3
11 2
20 3
3 5
26 4
7 1
22 4
我已将上述输入添加到两个列表k和v中:
k = ['1', '16', '11', '20', '3', '26', '7', '22']
v = ['2', '3', '2', '3', '5', '4', '1', '4']
我已经将两个列表添加到一个字典中,以便将它们作为键值对。我使用了
OrderDict
,因为我希望元素的顺序与输入时相同。from collections import OrderedDict
d = OrderedDict(zip(k, v))
现在,我需要按照值的相反顺序对字典d
进行排序。(实际上我需要进行稳定排序,由于Python中的sorted
是一种稳定排序,因此我使用它。来源:这里)具体操作如下:
s = sorted(d, key = itemgetter(1), reverse=True)
预期输出:
3 5
26 4
22 4
16 3
20 3
1 2
11 2
7 1
但是在我实施了上述的 sorted
函数后,我没有得到预期的输出。我收到了 IndexError: string index out of range
的错误信息。
有人能告诉我我做错了什么吗?我的方法错了还是流程错了?您能否告诉我为什么我不能得到预期的输出。提前感谢您的帮助,任何帮助都将不胜感激。
d
而不是d.items
会有什么区别?它的目的是什么。如果听起来很傻,请原谅,但我只是想更好地理解。 - sdgdd.items()
返回(key, value)元组。基本上,它可以为您节省一个额外的字典查找。 - eestrada