Вот рабочее решение, проверьте обновленный ответ внизу.
Причина, по которой вы получаете ошибку «не удается объединить», заключается в том, что «nested_status» в некоторых итерациях равно «None», а вы попытался добавить к нему строку ('...' + None) в операторе печати. вы должны сначала проверить, имеет ли nested_status значение.
import datetime
dates = [datetime.datetime(2020, 7, 4, 0, 0), datetime.datetime(
2020, 7, 6, 0, 0), datetime.datetime(2020, 7, 7, 0, 0)]
regions = ["SA", "CA", "EU"]
nested = {"SA": {"20200525": "H", "20201126": "C", "20201224": "H", "20200101": "C", "20201127": "C", "20200217": "C", "20200120": "C", "20200907": "C", "20200410": "C", "20200704": "C",
"20201225": "C"}, "CA": {"20200410": "C", "20200518": "C", "20200701": "C", "20200101": "C", "20201012": "C", "20201228": "C", "20201225": "C", "20200803": "C", "20200907": "C", "20200217": "C"}}
for region in regions:
for d in dates:
day = d.strftime("%Y%m%d")
if (nested.get(region) or {}).get(day):
print("Nested value found in {} ! {}".format(region, day))
nested_status = (nested.get(region) or {}).get(day)
if nested_status:
if nested_status == 'C':
continue #<-- skip this loop iteration if C
print("{} status is: ".format(region) + nested_status)
, если вас не интересует «if nested_status == C», просто пропустите текущую итерацию даты.
if nested_status:
if nested_status == 'C':
continue #<-- skip this loop iteration if C
print("{} status is: ".format(region) + nested_status)