2015-10-29 4 views

ответ

0

OrderedDict использует положение значения, если оно уже присутствует; , если это не, просто рассматривает его как новое значение и добавляет его в конце.

Это in the documentation. Если вам нужно заменить и поддерживать порядок, вы должны сделать это вручную:

od = OrderedDict({i:i for i in range(4)}) 
# od = OrderedDict([(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]) 

# Replace the key and value for key == 0: 
d = OrderedDict(('replace','key') if key == 0 else (key, value) for key, value in od.items()) 
# d = OrderedDict([('replace', 'key'), (1, 1), (2, 2), (3, 3), (4, 4)]) 

# Single value replaces are done easily: 
d[1] = 20 # and so on.. 

Кроме того, в верхней части страницы документации вы увидите ссылку на файл, содержащий, среди прочего, источник для класса OrderedDict. Он находится в collections.py и, фактически, first class defined.

1

Из документации Python:

Если новая запись перезаписывает существующую запись, исходное положение вставки остается неизменным. При удалении записи и повторной установке она переместит ее до конца.

Смежные вопросы