На самом деле два вопроса: Если у меня есть словарь (который изначально был получен в результате синтаксического анализа сообщения 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» был необязательным, что заставляет указанную выше конструкцию проверять, существует ли элемент перед итерацией по массиву. Я хотел бы знать, лучше ли с точки зрения дизайна сказать, что элемент является обязательным (просто с пустым массивом, если элементов нет).