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Сообщить о неточности