Я хочу сравнить значения одного словаря со значениями второго словаря.Если значения соответствуют определенным критериям, я хочу создать третий словарь с парами ключей и значений, которые будут различаться в зависимости от совпадений.
Вот придуманный пример, который показывает мою проблему.
edit: извините за все возвраты, но переполнение стека не распознает одиночные возвраты и запускает 3-4 строки в одну строку, делая код неразборчивым.Кроме того, он не выделяет мой код как код.не знаю почему.
employee = {'skills': 'superintendent', 'teaches': 'social studies',
'grades': 'K-12'}
school_districts = {0: {'needs': 'superintendent', 'grades': 'K-12'},
1:{'needs': 'social_studies', 'grades': 'K-12'}}
jobs_in_school_district = {}
for key in school_districts:
if (employee['skills'] == school_districts[key]['needs']):
jobs_in_school_district[key] = {}
jobs_in_school_district[key]['best_paying_job'] = 'superintendent'
if (employee['teaches'] == school_districts[key]['needs']):
jobs_in_school_district[key] = {}
jobs_in_school_district[key]['other_job'] = 'social_studies_teacher'
print(jobs_in_school_district)
Это значение, которое я хочу увидеть для 'jobs_in_school_district':
{0: {'best_paying_job': 'superintendent'},
1: {'other_job': 'social_studies_teacher'}}
Вот что я получаю:
{1: {'other_job': 'social_studies_teacher'}}
Я понимаю, что здесь не так.Python устанавливает jobs_in_school_district
равным {0: {'best_paying_job': 'superintendent'}
после первого блока if (строки 6-8).Затем выполняется второй блок if (строка 10).Но затем он перезаписывает {0: {'best_paying_job': 'superintendent'}
в строке 11 и снова создает пустой dict.Затем он присваивает 1: {'other_job': 'social_studies_teacher'} 'jobs_in_school_district
в строке 12.
Но если я исключу два jobs_in_school_district[key] = {}
в каждом из блоков for (строки 7 и 11)и просто поместите один перед оператором 'for' (новая строка 5) следующим образом:
jobs_in_school_district[key] = {}
for key in school_districts:
if (employee['skills'] == school_districts[key]['needs']):
jobs_in_school_district[key]['best_paying_job'] = 'superintendent'
if (employee['teaches'] == jobs[key]['needs']):
jobs_in_school_district[key]['other_job'] = 'social_studies_teacher'
print(jobs_in_school_district)
Он будет проверять только первый ключ в диктанте 'school_districts' и затем останавливаться (он останавливается, я думаю,Я не знаю), поэтому я получаю это:
jobs_in_school_district = {0: {'best_paying_job': 'superintendent'}
(я пытался переписать это несколько раз, и иногда вместо этого я получаю "ключевую ошибку").
Первый вопрос: почему не работает второй блок кода?Второй вопрос: как мне написать код, чтобы он работал?
(я не совсем понимаю «следующий» (метод или функция) и что он делает, поэтому, если мне придется его использовать, не могли бы вы объяснить? Спасибо).