Изменить ключ в OrderedDict без потери порядка
Начиная с
OrderedDict([('a', 1), ('c', 3), ('b', 2)])
можно ли положить
OrderedDict([('a', 1), ('__C__', 3), ('b', 2)])
убедитесь, что элемент '__C__'
находится перед 'b'
и после 'a'
т.е. сохраняя порядок?
Ответы
Ответ 1
Вы можете попробовать:
>>> d = OrderedDict([('a', 1), ('c', 3), ('b', 2)])
>>> d
OrderedDict([('a', 1), ('c', 3), ('b', 2)])
>>> d2 = OrderedDict([('__C__', v) if k == 'c' else (k, v) for k, v in d.items()])
>>> d2
OrderedDict([('a', 1), ('__C__', 3), ('b', 2)])
Ответ 2
если вы хотите изменить текущий объект словаря
change_key(dict, old, new):
for i in range(len(dict)):
k,v = self.popitem(False)
self[new if old == k else k] = v