【发布时间】:2016-08-06 16:45:34
【问题描述】:
我有一个看起来像这样的 python 字典:
attributes = {
'size': ['s','m','l'],
'color': ['black', 'orange'],
}
我想得到一个值列表。如果我使用values(),我会得到:
>>> attributes.values()
[['black', 'orange'], ['s', 'm', 'l']]
但是,我希望列表的结果列表按字典键以相反的顺序排序——即大小然后颜色,而不是颜色然后大小。我想要这个:
[['s', 'm', 'l'], ['black', 'orange']]
我不一定事先知道字典键是什么,但我总是知道我想要它们按字母顺序还是逆字母顺序。
有没有一些pythonic方法可以做到这一点?
我唯一能想到的似乎......不太像python:
keys = sorted(attributes.keys(), reverse=True)
result = []
for key in keys:
result.append(attributes[key])
很难从attributes.values() 到所有这些只是为了对列表进行排序!
【问题讨论】:
-
字典是无序的,因此没有简单的方法来指定字典键的显示顺序。您可以订购显示,但不能订购字典中的键本身。但是,您可以尝试使用 Ordered Dict(包含在 Python 2.7+ 中)来解决这个问题。
-
sorted(attributes, reverse=True),你不需要.keys
标签: python sorting dictionary