Представления словаря - это, по сути, их название: представления просто похожи на окно для ключей и значений (или элементов) словаря.Вот выдержка из официальной документации для Python 3:
>>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}
>>> keys = dishes.keys()
>>> values = dishes.values()
>>> # view objects are dynamic and reflect dict changes
>>> del dishes['eggs']
>>> keys # No eggs anymore!
dict_keys(['sausage', 'bacon', 'spam'])
>>> values # No eggs value (2) anymore!
dict_values([1, 1, 500])
(эквивалент Python 2 использует dishes.viewkeys()
и dishes.viewvalues()
.)
Этот примерпоказывает динамический символ представлений : представление ключей не копия ключей в данный момент времени, а скорее простое окно, которое показывает вам ключи;если они меняются, то то, что вы видите через окно, тоже меняется.Эта функция может быть полезна в некоторых обстоятельствах (например, можно работать с представлением ключей во многих частях программы вместо пересчета текущего списка ключей каждый раз, когда они необходимы) - обратите внимание, что если ключи словаря измененыво время итерации по представлению, поведение итератора не очень хорошо определено, что может привести к ошибкам .
Одним из преимуществ является то, что смотрит на, скажем,ключи используют только небольшой и фиксированный объем памяти и требуют небольшой фиксированный объем процессорного времени , так как не создается список ключей (Python 2, с другойстороны, часто излишне создающие новый список, как цитирует Раджендран Т, который занимает память и время в количестве, пропорциональном длине списка).Чтобы продолжить аналогию с окном, если вы хотите увидеть пейзаж за стеной, вы просто делаете в нем отверстие (вы строите окно);Копирование ключей в список будет соответствовать рисованию копии ландшафта на вашей стене - копия занимает время, пространство и не обновляется сама.
Подводя итог, можно сказать, что виды - это просто ... виды (окна)в вашем словаре, которые показывают содержимое словаря даже после его изменения.Они предлагают функции, которые отличаются от функций списков: список ключей содержит копию ключей словаря в данный момент времени, в то время как представление является динамическим и его получение намного быстрее, поскольку оно недолжны быть скопированы любые данные (ключи или значения) для создания.