Python 如何以尊重大小写的方式对字典值进行排序?

Python 如何以尊重大小写的方式对字典值进行排序?,python,Python,我们如何根据大写字母对以下单词进行排序,即person[:][1][2] 谢谢 如果您想按字母、姓氏和名字排序: lst = list(person.items()) lst.sort(key=lambda x: x[1][2] + ' ' + x[1][0] + ' ' + x[1][1]) 您可能只是想使用这些值,而不是字典。字典通常不排序,因为您希望通过哈希优化数据结构 sorted(persons.values(), key=lambda item: item[2]) 是获取包含字典

我们如何根据大写字母对以下单词进行排序,即
person[:][1][2]

谢谢

如果您想按字母、姓氏和名字排序:

lst = list(person.items())
lst.sort(key=lambda x: x[1][2] + ' ' + x[1][0] + ' ' + x[1][1])

您可能只是想使用这些值,而不是字典。字典通常不排序,因为您希望通过哈希优化数据结构

sorted(persons.values(), key=lambda item: item[2])
是获取包含字典值的排序列表的最简单方法


但是也许您首先想使用
列表而不是
dict

这个问题在现代Python中很容易解决:

>>> from collections import OrderedDict
>>> d={....your data....}

>>> d = OrderedDict(sorted(d.items(), key=lambda item: item[1][2]))

听写没有排序,列表是。很抱歉,我是新来的,我试着理解。好吧list@LevLevitsky不总是这样。已订购的信息通信已订购。请看。@CodeGnome是的,我也将发布该链接。当您要对条目重新排序时,不要使用
dict
。如果要排序,请使用
列表
。即使是
OrderedDict
AFAIK也不能由任意比较器重新调用。如果一个
dict
是可重排序的,那么它会很慢。AttributeError:“dict\u items”对象没有属性“sort”,您必须在Python 3.x下测试过这一点;我在2.x以下。我正要添加
list()
以强制
person.items()
扩展到列表,但Lev Levitsky为我做了这件事。字典既可以实现为哈希表,也可以具有顺序。然而,CPython的默认实现不是。@NiklasB排序字典通常是btrees,按键或插入排序,而不是按值排序。当然,您可以使用两个结构,一个键的排序列表和一个hashmap,指向相同的数据。你也可以在python中轻松实现这一点。只需使用不同的比较器对列表重新排序即可。OrderedDicts确实比常规dicts更胖,但你的数据集需要很大,才能在任何实际应用程序中发挥作用。
>>> from collections import OrderedDict
>>> d={....your data....}

>>> d = OrderedDict(sorted(d.items(), key=lambda item: item[1][2]))