使用sorted:
>>> d = {'BLACK': 0, 'brown': 1, 'RED': 2, 'orange': 4, 'YELLOW': 7, 'green': 5, 'BLUE': 4,
'violet': 2, 'GRAY': 3, 'White': 6}
>> sorted(d, key=lambda i: (d[i], i.lower()))
['BLACK', 'brown', 'RED', 'violet', 'GRAY', 'BLUE', 'orange', 'green', 'White', 'YELLOW']
注意:这里假定所有内容都应该是小写的,因为 python 将大写单词排在小写单词之前。
我还将您的变量重命名为 d,因为 dict 是内置的。
分解正在发生的事情:
字典上的sorted 返回由提供的函数key 排序的键(默认是键的直接比较)
>>> sorted(d)
['BLACK', 'BLUE', 'GRAY', 'RED', 'White', 'YELLOW', 'brown', 'green', 'orange', 'violet']
要按值排序,请使用dict.get:
>>> sorted(d, key=d.get)
['BLACK', 'brown', 'RED', 'violet', 'GRAY', 'orange', 'BLUE', 'green', 'White', 'YELLOW']
然后我们必须按关键字排序,以防出现平局。因为python是一个一个地比较它的元组,我们可以构造一个(value, key)的元组,它会比较项目,如果它们相同,就会比较项目。
>>> (4, "blue") < (4, "orange")
True
>>> (4, "blue") < (3, "orange")
False