Python Glossary English

Python 3.3+collectionsпонятие

collections.abc.ValuesView

collections.abc — протоколы

Тип представления значений словаря (d.values()).

Синтаксис

isinstance(obj, collections.abc.ValuesView)

Это живое представление, а не копия: изменили словарь — изменилось и оно, а попытка добавить или удалить ключ прямо во время итерации по нему даёт RuntimeError. В отличие от представлений ключей и элементов, ValuesView не ведёт себя как множество (нет &, |, -): значения могут повторяться и быть нехешируемыми. Индексации и срезов тоже нет — нужен произвольный доступ, оборачивайте в list().

Примеры

import collections.abc as abc
print(isinstance({}.values(), abc.ValuesView))   # → True
d = {'a': 1, 'b': 2}
print(list(d.values()))   # → [1, 2]
print(len(d.values()), sum(d.values()))   # → 2 3
print(isinstance(d.keys(), abc.ValuesView), isinstance(d.keys(), abc.KeysView))   # → False True
v = d.values()
d['c'] = 10
print(list(v))   # → [1, 2, 10]
print(d.values()[0])   # → TypeError

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности