Обмен значениями и ключами в OrderedDict Python

Вот мой OrderedDict

o=OrderedDict([('xmllist', 123), ('A', 124), ('B', 125), ('C', 126), ('D', 127)])

Как я могу поменять свои ключи и значения как,

o=OrderedDict([('A', 123), ('B', 124), ('C', 125), ('D', 126)])

person Nishant Nawarkhede    schedule 13.02.2014    source источник
comment
возможный дубликат Python: лучший способ обмена ключами со значениями в словаре?   -  person M4rtini    schedule 13.02.2014
comment
Похоже, что вопрос получен из ответа на предыдущий вопрос. Вам лучше построить желаемую пару ключ-значение с самого начала. вместо того, чтобы изменить его позже.   -  person falsetru    schedule 13.02.2014
comment
@falsetru Да! он является производным от предыдущего. Не могли бы вы рассказать мне, как построить нужную пару ключ-значение?   -  person Nishant Nawarkhede    schedule 13.02.2014
comment
@Nishant, ожидаемый результат в вопросе не соответствует заголовку. Он просто удаляет xmllist из словаря. Это то, что вы хотите?   -  person falsetru    schedule 13.02.2014
comment
@falsetru Да, хочу удалить xmllist из словаря.   -  person Nishant Nawarkhede    schedule 13.02.2014


Ответы (1)


Использование zip и itertools.islice:

>>> from collections import OrderedDict
>>> import itertools
>>>
>>> o = OrderedDict([('xmllist', 123), ('A', 124), ('B', 125), ('C', 126), ('D', 127)])
>>> OrderedDict((key1, o[key2]) for key1, key2 in zip(itertools.islice(o, 1, None), o))
OrderedDict([('A', 123), ('B', 124), ('C', 125), ('D', 126)])

сопоставление: o['A'] = o['xmllist'], o['B'] = o['A'], o['C'] = o['B'], ...

person falsetru    schedule 13.02.2014
comment
››› o = OrderedDict([('xmllist', 123), ('A', 124), ('B', 125), ... ('C', 126), ('D', 127) ]) ››› del o['xmllist'] ››› o OrderedDict([('A', 124), ('B', 125), ('C', 126), ('D', 127) ]) Это то, что я хочу, но хочу, чтобы значения менялись местами, например, o=OrderedDict([('A', 123), ('B', 124), ('C', 125), ('D', 126 )]) - person Nishant Nawarkhede; 13.02.2014
comment
Нет, не нужно вычитать 1 из каждого значения, они не всегда могут быть упорядочены! - person Nishant Nawarkhede; 13.02.2014