Python 构建字典值列表,按键排序

Python 构建字典值列表,按键排序,python,sorting,dictionary,Python,Sorting,Dictionary,我有一本python字典,看起来像这样: attributes = { 'size': ['s','m','l'], 'color': ['black', 'orange'], } 我想得到一个值列表。如果我使用values(),我会得到以下结果: >>> attributes.values() [['black', 'orange'], ['s', 'm', 'l']] 但是,我希望结果列表按字典键按相反顺序排序——即大小和颜色,而不是颜色和大小。我想要这

我有一本python字典,看起来像这样:

attributes = {
    'size': ['s','m','l'],
    'color': ['black', 'orange'],
}
我想得到一个值列表。如果我使用
values()
,我会得到以下结果:

>>> attributes.values()
[['black', 'orange'], ['s', 'm', 'l']]
但是,我希望结果列表按字典键按相反顺序排序——即大小和颜色,而不是颜色和大小。我想要这个:

[['s', 'm', 'l'], ['black', 'orange']]
我不一定事先知道字典上的键是什么,但我总是知道我想要的是按字母顺序还是按逆字母顺序

有什么类似蟒蛇的方法吗

我唯一能想到的就是。。。不太像python:

keys = sorted(attributes.keys(), reverse=True)
result = []
for key in keys:
    result.append(attributes[key])
仅仅为了对列表进行排序,很难从
attributes.values()
转到所有这些

此代码:

keys = sorted(attributes.keys(), reverse=True)
result = []
for key in keys:
    result.append(attributes[key])
基本上是发明列表理解的用例:

result = [attributes[key] for key in sorted(attributes.keys(), reverse=True)]
最简单的方法是使用,它会记住插入元素的顺序:

import collections

result = collections.OrderedDict(sorted(attributes.items(), reverse=True))

>>> result.values()
[['s', 'm', 'l'], ['black', 'orange']]

字典是非有序的,因此没有简单的方法来指定字典键的显示顺序。您可以对显示进行排序,但不能对dict中的键本身进行排序。但是,您可以尝试使用排序的dict(包含在Python 2.7+中)来解决此问题。
sorted(attributes,reverse=True)
,您不需要。键您可以保存一些查找,如下所示:
[键的值,排序中的值(attributes.items(),reverse=True)]
result=[val表示键,val表示已排序(attributes.items(),reverse=True)]
以避免第二轮查找。编辑:哈。挨揍。:-)@抢劫ᵩ 很好的观点,但是我试图对原始代码做尽可能少的修改,这样就可以清楚地知道它是如何翻译的。很好的答案!奇怪的是,这个答案的票数如此之少:-\n我认为是询问基于键的字母顺序,而不是插入顺序…还要注意,自从Python 3.6以来,这种行为也发生在常规的
dict
s上。