В библиотеке python теперь у нас есть две Python Реализация словарей, которая подклассифицирует dict поверх и родного типа dict.
Защитники Python всегда предпочитали defaultdict использовать dict.setdefault, когда это возможно. Даже doc цитирует, что This technique is simpler and faster than an equivalent technique using dict.setdefault():
Аналогичным образом, поскольку словари не поддерживают порядок, использование OrderedDict с использованием dict, за которым следует сортировка элементов, является предпочтительным, когда это возможно для альтернативного использования.
В приведенном выше случае код определенно чище, но ценой штрафа за производительность.
Отвечая и комментируя один из вопросов уникальный список python на основе элемента, я наткнулся на штраф за производительность над native dict при использовании defaultdict и OrderedDict. Также кажется, что размер данных также не несущественен для преимущества производительности. dict решение есть над другими.
Я верю There should be one-- and preferably only one --obvious way to do it., так что это лучший способ?