Items — множественное число английского слова item: «элемент, пункт, предмет, позиция». В разработке чаще всего встречается как dict.items() — метод словаря Python, который возвращает пары «ключ — значение». Ниже — короткий перевод, потом метод по шагам: перебор, view-объект, ошибки и аналоги в других языках. Примеры проверены на Python 3.14.7 (сентябрь 2026).
Содержание
Перевод: что значит item и items
Произносится примерно как «айтем», во множественном числе «айтемз». Русский перевод зависит от контекста — одного универсального слова нет.
| Контекст | Пример | Перевод |
|---|---|---|
| Список, повестка | the next item on the agenda | следующий пункт повестки |
| Магазин, заказ | 3 items in your cart | 3 товара в корзине |
| Бюджет, счет | a budget item | статья бюджета, позиция |
| Игры | rare items, inventory items | редкие предметы, предметы инвентаря |
| Интерфейс | menu item, list item | пункт меню, элемент списка |
| Код, данные | dict.items(), "items": [...] |
пары словаря, массив элементов |
Главное для разработчика: item — это один элемент какой-то коллекции, items — сами элементы или их набор. Именно в этом смысле слово живет в названиях методов, полей и компонентов.
Метод dict.items() в Python: минимальный пример
Словарь (dict) хранит пары «ключ — значение». Метод items() не принимает аргументов и возвращает все пары. Самый частый сценарий — перебрать словарь, получая ключ и значение сразу:
prices = {"кофе": 250, "чай": 180, "сок": 320}
for name, price in prices.items():
print(f"{name}: {price} руб.")
print(prices.items())
print(type(prices.items()).__name__)
Вывод:
кофе: 250 руб.
чай: 180 руб.
сок: 320 руб.
dict_items([('кофе', 250), ('чай', 180), ('сок', 320)])
dict_items
Что здесь происходит по шагам:
prices.items()отдает объект типаdict_items, каждый элемент которого — кортеж(ключ, значение).- Цикл
for name, price in ...на каждом шаге распаковывает кортеж в две переменные. - Порядок пар совпадает с порядком добавления ключей: с Python 3.7 сохранение порядка вставки — гарантия языка для
dict.
keys(), values() и items(): что выбрать
У словаря три похожих метода. Выбор зависит от того, что нужно внутри цикла.
| Метод | Что возвращает | Тип объекта | Когда брать |
|---|---|---|---|
d.keys() |
ключи | dict_keys |
нужны только ключи (или просто for k in d) |
d.values() |
значения | dict_values |
нужны только значения: сумма, максимум |
d.items() |
пары (ключ, значение) |
dict_items |
нужны и ключ, и значение |
Частый антипаттерн — перебирать ключи и доставать значение отдельно: for k in d: print(k, d[k]). Это работает, но items() читается проще и не делает лишний поиск по ключу на каждом шаге.
Что такое view-объект и почему это важно
dict_items — это представление (view), а не копия данных. Оно не хранит пары отдельно, а смотрит на сам словарь. Если словарь изменился, представление сразу это «видит». Список, созданный через list(), наоборот, фиксирует снимок на момент вызова.
prices = {"кофе": 250, "чай": 180}
view = prices.items()
snapshot = list(prices.items())
prices["сок"] = 320
print(view)
print(snapshot)
print(len(view), ("чай", 180) in view)
print(view.mapping)
Вывод:
dict_items([('кофе', 250), ('чай', 180), ('сок', 320)])
[('кофе', 250), ('чай', 180)]
3 True
{'кофе': 250, 'чай': 180, 'сок': 320}
Представление поддерживает len(), проверку in и перебор, но не индексацию: view[0] не сработает, для этого нужен list(view). Атрибут mapping (ссылка на исходный словарь) появился в Python 3.10.
Типичные задачи с items()
Сортировка словаря по значению, фильтрация и «разворот» ключей и значений делаются через items() в одну строку:
prices = {"кофе": 250, "чай": 180, "сок": 320}
by_price = sorted(prices.items(), key=lambda item: item[1], reverse=True)
print(by_price)
cheap = {name: price for name, price in prices.items() if price < 300}
print(cheap)
by_value = {price: name for name, price in prices.items()}
print(by_value)
print(list(reversed(prices.items())))
Вывод:
[('сок', 320), ('кофе', 250), ('чай', 180)]
{'кофе': 250, 'чай': 180}
{250: 'кофе', 180: 'чай', 320: 'сок'}
[('сок', 320), ('чай', 180), ('кофе', 250)]
Граница «разворота»: если у двух ключей одинаковое значение, в новом словаре останется только последняя пара — ключи обязаны быть уникальными. reversed() для представлений словаря работает с Python 3.8.
dict_items ведет себя как множество, поэтому два словаря можно сравнить операциями - и &. Например, найти, какие пары добавились или поменялись:
old = {"кофе": 250, "чай": 180}
new = {"кофе": 270, "чай": 180, "сок": 320}
print(sorted(new.items() - old.items()))
print(new.items() & old.items())
Вывод:
[('кофе', 270), ('сок', 320)]
{('чай', 180)}
Результат операции — обычное множество, порядок в нем не гарантирован, поэтому в примере он отсортирован. Ограничение: значения должны быть хешируемыми. Если значение — список, a.items() & b.items() падает с TypeError: cannot use 'tuple' as a set element (unhashable type: 'list'), хотя сравнение a.items() == b.items() при этом работает.
Частые ошибки
Ошибка 1: удаление ключей во время перебора. Код пытается убрать из словаря товары с нулевым остатком:
stock = {"кофе": 0, "чай": 5, "сок": 0}
for name, qty in stock.items():
if qty == 0:
del stock[name]
Результат:
RuntimeError: dictionary changed size during iteration
Представление «живое», и изменение размера словаря ломает перебор. Исправление — перебирать снимок или собрать новый словарь:
stock = {"кофе": 0, "чай": 5, "сок": 0}
for name, qty in list(stock.items()):
if qty == 0:
del stock[name]
print(stock)
stock = {"кофе": 0, "чай": 5, "сок": 0}
stock = {name: qty for name, qty in stock.items() if qty > 0}
print(stock)
Оба варианта печатают {'чай': 5}. Менять значения у существующих ключей во время перебора можно — ошибку вызывает только добавление или удаление ключей.
Ошибка 2: забыли вызвать items(). Цикл for name, price in prices: перебирает только ключи и пытается разложить строку "кофе" на две переменные:
ValueError: too many values to unpack (expected 2)
Исправление — for name, price in prices.items():. Коварный случай: если все ключи — строки ровно из двух символов, ошибки не будет, и в переменные молча попадут отдельные буквы.
Ошибка 3: код из старых учебников. В Python 2 были iteritems() и viewitems(), в Python 3 их нет:
AttributeError: 'dict' object has no attribute 'iteritems'
Исправление — просто items(): в Python 3 он уже возвращает легкое представление, а не копию списка.
Items в других языках и инструментах
Идея «перебрать пары ключ — значение» есть везде, но называется по-разному. Все строки таблицы проверены запуском на примере словаря цен.
| Язык | Аналог dict.items() |
|---|---|
| JavaScript | Object.entries(obj), для Map — перебор for (const [k, v] of map) |
| Java | map.entrySet(), элемент — Map.Entry с getKey() и getValue() |
| C# | foreach (var (k, v) in dict), элемент — KeyValuePair |
| PHP | foreach ($arr as $k => $v) |
Слово items встречается и вне словарей. В WinForms у ListBox свойство Items — коллекция строк списка. В ответах многих REST API поле "items" содержит массив записей текущей страницы выдачи. У pandas.DataFrame тоже есть метод items(), но он перебирает пары «имя столбца — столбец», а не строки. В играх items — предметы инвентаря и добыча, в интернет-магазинах — позиции заказа (line items).
Выводы
- Item — «элемент, пункт, предмет», items — набор элементов; точный перевод зависит от контекста.
dict.items()в Python возвращает пары(ключ, значение)и нужен, когда в цикле требуются и ключ, и значение.- Результат — view-объект
dict_items: он отражает изменения словаря, поддерживаетlen,inи операции множеств, но не индексацию. - Удалять или добавлять ключи во время перебора
items()нельзя — перебирайтеlist(d.items())или соберите новый словарь. - В других языках та же идея:
Object.entriesв JavaScript,entrySet()в Java,KeyValuePairв C#.
Где применяется / связь с практикой
Словари и items() — повседневный инструмент: разбор JSON из API, подсчет частот, настройки приложения, группировка данных перед записью в базу. Уверенная работа с коллекциями — одна из первых вещей, которую проверяют на собеседовании джуна.
Освойте тему на практике
Если хочется системно пройти Python от синтаксиса и структур данных до собственных проектов, посмотрите программу курса Python Developer. Basic. Чтобы сначала попробовать формат, подойдут бесплатные открытые уроки Otus.
FAQ
Быстрее ли items(), чем перебор ключей с d[k]?
Обычно немного быстрее, потому что не нужен отдельный поиск по ключу, но разница заметна только на больших словарях — выбирать стоит по читаемости.
Как получить первую пару словаря?
next(iter(d.items())) вернет первую пару в порядке вставки; на пустом словаре будет StopIteration.
Можно ли передать d.items() в функцию, которая ждет список?
Если функция только перебирает элементы — да; если обращается по индексу или меняет список, передайте list(d.items()).



