В Python 3.3 класс ChainMap
был добавлен в модуль collections
:
Предусмотрен класс ChainMap для быстрой привязки нескольких отображений поэтому их можно рассматривать как единое целое. Это часто намного быстрее, чем создание нового словаря и выполнение нескольких вызовов update().
Пример:
>>> from collections import ChainMap
>>> x = {'a': 1, 'b': 2}
>>> y = {'b': 10, 'c': 11}
>>> z = ChainMap(y, x)
>>> for k, v in z.items():
print(k, v)
a 1
c 11
b 10
Он был мотивирован этой проблемой и опубликован этим (не было создано PEP
).
Насколько я понимаю, это альтернатива наличию дополнительного словаря и поддержание его с помощью update()
.
Вопросы:
- В каких случаях используется
ChainMap
? - Есть ли примеры реального мира
ChainMap
? - Используется ли в сторонних библиотеках, которые переключаются на python3?
Бонусный вопрос: есть ли способ использовать его на Python2.x?
Я слышал об этом в Transforming Code into Beautiful, Idiomatic Python
Обсуждение PyCon Раймондом Хеттингером, и я хотел бы добавить его в свой инструментарий, но мне не хватает понимания, когда я должен использовать его.