Python: объедините «if 'x' in dict» и «for i in dict ['x']»

На самом деле два вопроса: Если у меня есть словарь (который изначально был получен в результате синтаксического анализа сообщения json), в котором есть необязательный массив:

dict_with = {'name':'bob','city':'san francisco','kids': {'name': 'alice'} }
dict_without = {'name':'bob','city':'san francisco' }

У меня обычно есть код вроде:

if 'kids' in dict:
   for k in dict['kids']:
      #do stuff

Мой первый вопрос, есть ли какой-нибудь питон способ объединить защиту if и цикл for?

Второй вопрос: моя интуиция подсказывает мне, что лучшим дизайном для исходного сообщения json было бы всегда указывать элемент kids, только с пустым словарем:

dict_better = {'name':'bob','city':'san francisco','kids': {} }

Я могу Я не нахожу какой-либо методологии проектирования, подтверждающей это. Сообщение json - это сообщение о состоянии от веб-службы, которая поддерживает представления json и xml. Поскольку они начали с xml, они сделали так, чтобы элемент «kids» был необязательным, что заставляет указанную выше конструкцию проверять, существует ли элемент перед итерацией по массиву. Я хотел бы знать, лучше ли с точки зрения дизайна сказать, что элемент является обязательным (просто с пустым массивом, если элементов нет).

6
задан Mark 16 December 2010 в 18:45
поделиться