2013-04-01 4 views
2

Я сортирую свой словарь по ключевым словам, но я бы хотел изменить порядок. Однако я не получаю много радости от нескольких примеров, которые я видел в Интернете.Реверсированный отсортированный словарь в Python 3

Вот вид

tempdict = collections.OrderedDict(sorted(tempdict.items())) 

теперь я пытаюсь:

reverse = collections.OrderedDict(tempdict.items()[::-1]) 
reverse = collections.OrderedDict(map(reversed, tempdict.items())) 

Но они не работают. Каков самый умный и элегантный способ сортировки словаря. Да, я знаю, словари на самом деле не используются для сортировки, но это хорошо работает для нас. Благодарю.

+0

Пожалуйста, покажите на примере – jamylak

+2

'обратный = collections.OrderedDict (список (tempdict.items()) [:: - 1]) 'будет работать. – martineau

ответ

16

Для сортировки в обратном порядке:

collections.OrderedDict(sorted(tempdict.items(), reverse=True)) 

Чтобы изменить существующий Dict:

collections.OrderedDict(reversed(list(tempdict.items()))) 
+0

Несомненно, это делает что-то совсем другое, чем его спрашивают? Либо это, либо я полностью неправильно понимаю вопрос. – NPE

+1

Ну, гм, конечно, это не * полностью * другое, так как оно дает правильный результат. Но да, я пропустил титул и неправильно понял пост из-за этого. –

+1

По-видимому, есть два способа прочитать вопрос - давайте подождем OP. –

2
>>> d = collections.OrderedDict([(1,2),(3,4),(5,6)]) 
>>> collections.OrderedDict(reversed(list(d.items()))) 
OrderedDict([(5, 6), (3, 4), (1, 2)]) 
Смежные вопросы