У меня есть словарь питона, который выглядит примерно так:Построение списка значений словаря, отсортированных по ключевым
attributes = {
'size': ['s','m','l'],
'color': ['black', 'orange'],
}
Я хочу, чтобы получить список значений. Если я использую values()
, я получаю это:
>>> attributes.values()
[['black', 'orange'], ['s', 'm', 'l']]
Однако, я хочу, чтобы в результате список списков для сортировки по словарю ключам в обратном порядке - то есть, размер, а затем цвета, а не цвет, а затем размер. Я хочу это:
[['s', 'm', 'l'], ['black', 'orange']]
Я не necesarilly знаю, что ключи словаря будут заранее быть, но я всегда знаю, хочу ли я их в алфавитном порядке или обратном алфавитном порядке.
Есть ли какой-нибудь питонический способ сделать это?
Единственное, что я могу думать, кажется ... не очень питон, как:
keys = sorted(attributes.keys(), reverse=True)
result = []
for key in keys:
result.append(attributes[key])
Это трудно идти от attributes.values()
всем, что только для сортировки списка!
Словари не упорядочены, поэтому нет простого способа указать y порядок, в котором показаны словарные ключи. Вы можете заказать дисплей, но не сами ключи в dict. Тем не менее, вы можете попробовать использовать Ordered Dict (включенный в Python 2.7+), чтобы обойти это. –
'sorted (attributes, reverse = True)', вам не нужны .keys –