У меня есть переменная, которая является вложенным словарем. И я хочу на каждой итерации присваивать новые значения. Но эта часть кода присваивает предыдущему значению targetInstances значение, которого быть не должно.
if "targetInstances" in filter_sf:
new_filter = self._set_filter_comp_oper_value(pipeline, new_filter, source_field["id"], filter_sf)
Как исправить, что при каждой итерации, если ключ ("targetInstances" в моем случае) не существует, он не назначается? Текущий обходной путь, который я использую, - это просто поместить dict без "targetInstances" в начале.
Моя переменная:
filters_to_add = {'Recruiter': {"AND":"", "operatorId": 'not in the selection list', "targetInstances": '3314 Tax'},'Job Profile': {"AND":"", "operatorId": 'in the selection list', "targetInstances": 'Finance'}, 'Job Requisition': {"AND":"", "operatorId": 'is not empty'}}
Мой код
def _prepare_json(self, pipeline, filters_to_add: dict):
new_filter = {"type": 'CONDITION', "id": 'any_id', "field": {},"operatorId": 'null'}
source_fields = self.ssi_get_filter_source_fields(pipeline).json_path("$.data")
filters = self._get_filters(pipeline)
for key in filters_to_add.keys():
if "AND" in filters_to_add[key].keys():
filter_sf = filters_to_add[key]
for source_field in source_fields:
if source_field["descriptor"] == key:
new_filter["field"] = source_field
new_filter["operatorId"] = filter_sf["operatorId"]
if "dataType" in filter_sf and source_field["returnType"] == filter_sf["dataType"]:
new_filter[filter_sf["targetType"]] = filter_sf["targetValue"]
if "targetInstances" in filter_sf:
new_filter = self._set_filter_comp_oper_value(pipeline, new_filter, source_field["id"], filter_sf)
if "useValueFromAnotherField" in filter_sf:
new_filter = self._set_filter_value_from_another_field(pipeline, new_filter, source_field["id"], filter_sf)
return self._prepare_json(pipelineId=pipeline, filter=filters)