Czy OrderedDict stanie się zbędne w Pythonie 3.7?


90

Z dziennika zmian Pythona 3.7 :

natura zachowania kolejności wstawiania obiektów dict została zadeklarowana jako oficjalna część specyfikacji języka Python.

Czy to oznaczałoby, że OrderedDictstaną się zbędne? Jedynym zastosowaniem, o jakim myślę, będzie zachowanie wstecznej kompatybilności ze starszymi wersjami Pythona, które nie zachowują kolejności wstawiania dla normalnych słowników.


Odpowiedzi:


132

Nie, nie stanie się on zbędny w Pythonie 3.7, ponieważ OrderedDictnie tylko dictzachowuje kolejność wstawiania, ale także oferuje metodę zależną od zamówienia OrderedDict.move_to_end()i obsługuje reversed()iterację *.

Co więcej, porównania równości z OrderedDictsą wrażliwe na kolejność i nadal nie ma to miejsca dictw Pythonie 3.7, na przykład:

>>> OrderedDict([(1,1), (2,2)]) == OrderedDict([(2,2), (1,1)]) 
False
>>> dict([(1,1), (2,2)]) == dict([(2,2), (1,1)]) 
True

Dwa istotne pytania tutaj i tutaj .

* Obsługa reversed()iteracji zwykłego języka Python dictzostała dodana do języka Python 3.8, patrz problem33462


Kwestia wrażliwości na porządek przy porównywaniu jest tutaj bardzo ważna.
Tim Skov Jacobsen
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.