Действительно два вопроса: если у меня есть словарь (который изначально был получен при разборе 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
Мой первый вопрос: есть ли какой-нибудь способ на Python объединить защиту if и цикл for?
Второй вопрос - моя интуиция говорит мне, что лучший дизайн для исходного сообщения json - всегда указывать элемент kids, просто с пустым словарем:
dict_better = {'name':'bob','city':'san francisco','kids': {} }
Я не могу найти методологию проектирования, которая бы подтверждала это. Сообщение json - это сообщение о состоянии от веб-службы, которая поддерживает представления json и xml. Так как они начали с xml, они сделали так, чтобы элемент "kids" был необязательным, что заставляет приведенную выше конструкцию проверять, существует ли элемент перед итерацией по массиву. Я хотел бы знать, лучше ли по дизайну говорить, что элемент является обязательным (просто с пустым массивом, если нет элементов).