Щоб відповісти на запитання " як я можу дізнатись, чи вказаний індекс у цьому диктаті вже встановлений на значення , яке не має значення ", я вважаю за краще таке:
try:
nonNone = my_dict[key] is not None
except KeyError:
nonNone = False
Це відповідає вже застосованій концепції EAFP (простіше просити пробачення, ніж дозволу). Він також уникає пошуку дублікатів ключів у словнику, як це було б у key in my_dict and my_dict[key] is not None
тому, що цікаво, якщо пошук дорого коштує.
Для фактичної проблеми, яку ви поставили, тобто збільшення інта, якщо вона існує, або встановлення її до значення за замовчуванням, я також рекомендую
my_dict[key] = my_dict.get(key, default) + 1
як у відповіді Ендрю Вілкінсона.
Є третє рішення, якщо ви зберігаєте змінні об’єкти у своєму словнику. Поширений приклад для цього - мультимапа , де ви зберігаєте список елементів для своїх ключів. У цьому випадку ви можете використовувати:
my_dict.setdefault(key, []).append(item)
Якщо значення для ключа у словнику не існує, метод setdefault встановить його другим параметром setdefault. Він поводиться так само, як і стандартний my_dict [key], повертаючи значення для ключа (яке може бути нещодавно встановленим значенням).