История изменений
Исправление pawnhearts, (текущая версия) :
В питоне обращение к несуществующему ключу бросит исключение. Но можно делать items.get('categories', дефолтное_значение) это довольно часто используется, например, делаешь пустой список дефолтным значением и можешь с ним смело работать как со списком.
Ещё есть defaultdict, в котором дефолтное значение задается при инициализации словаря т.е. можно делать что-то типа
In [1]: from collections import defaultdict
In [2]: d = defaultdict(list)
In [3]: d['foo'].append('a')
In [4]: d
Out[4]: defaultdict(list, {'foo': ['a']})
вы не проверяете, не приехал ли к вам в данных от внешнего источника
Потому что это наколенный скрипт под вполне конкертные данные.
Исходная версия pawnhearts, :
В питоне обращение к несуществующему ключу бросит исключение. Но можно делать items.get('categories', дефолтное_значение) это довольно часто используется, например, делаешь пустой список дефолтным значением и можешь с ним смело работать как со списком.
Ещё есть defaultdict, в котором дефолтное значение задается при инициализации словаря т.е. можно делать что-то типа
In [1]: from collections import defaultdict
In [2]: d = defaultdict(list)
In [3]: d['foo'].append('a')
In [4]: d
Out[4]: defaultdict(list, {'foo': ['a']})