Представления словаря - это, по сути, их название: представления - это просто окно с ключами и значениями (или элементами) словаря. Вот выдержка из официальной документации для 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, с другой стороны, часто излишне создает новый список, цитируемый Rajendran T, который занимает память и время в количестве, пропорциональном длине списка). Чтобы продолжить аналогию с окном, если вы хотите увидеть пейзаж за стеной, вы просто делаете в нем отверстие (вы строите окно); Копирование ключей в список будет соответствовать рисованию копии ландшафта на вашей стене - копия занимает время, пространство и не обновляется сама.
Подводя итог, представления - это просто ... представления (окна) в вашем словаре, которые отображают содержимое словаря даже после его изменения. Они предлагают функции, которые отличаются от функций списков: список ключей содержит копию ключей словаря в данный момент времени, в то время как представление является динамическим и его получение намного быстрее, так как ему не нужно копировать какие-либо данные ( ключи или значения) для того, чтобы быть созданным.