2016-07-18 2 views
-3

Так что у меня Dict чисел и строк, например, так:печати ДИКТ в обратном питона

d = {"Hi": None, 2110: 1110, 1110: None} 

И я хочу, чтобы напечатать его справа налево. Например:

{1110: None, 2110: 1110, "Hi": None} 

Как бы я это сделал? Если возможно, я бы хотел избежать сортировки, поскольку dict уже в порядке, просто обратный порядок, и мне кажется, что потребуется меньше времени, чтобы просто распечатать его в обратном порядке, чем отсортировать его. Если я ошибаюсь, пожалуйста, поправьте меня, и сортировка в порядке.

+5

dicts как правило, не предполагается, что в определенном порядке. – khelwood

+1

В первую очередь словарь не имеет никакого заказа. Если вы беспокоитесь о заказе, пожалуйста, используйте 'orderdict' –

+2

Первый вопрос: почему вы хотите это сделать? –

ответ

0

Вы можете использовать этот код для достижения этой цели:

d = {"Hi": None, 2110: 1110, 1110: None} 
print str(d) 
print '{' + ','.join(str(d)[1:-1].split(',')[::-1]) + '}' 

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

+0

Это не сохраняет порядок. OP должен будет использовать 'OrderedDict' – RoadRunner

+0

Я добавил примечание в свой ответ. – Ohumeronen

0

Вы должны использовать OrderedDict из collections модуля, и вы начинаете словарь должен быть список кортежей уже заказал с помощью OrderedDict, так что вы можете сохранить порядок исходного словаря. Это необходимо, так как OrderedDict запоминает порядок вставленных ключей.

from collections import OrderedDict 

d = OrderedDict([("Hi", None), (2110, 1110), (1110, None)]) 

result = OrderedDict(list(d.items())[::-1]) 
print(result) 

Выход:

OrderedDict([(1110, None), (2110, 1110), ('Hi', None)]) # remains this order always 
Смежные вопросы