Причина ошибки -
Словарь в python не имеет метода append()
, и, следовательно, вы получите примерно такую ошибку -
<module>AttributeError: 'dict' object has no attribute 'append'>
Итак, метод append не работает со словарем для добавления новых пар ключ: значение. Поэтому вам нужно использовать его так, как я показал в приведенном ниже коде.
Правильное решение -
Вам нужно перебрать ключи словаря и добавить значение ключа, когда вы найдете соответствующий ключ. Вы должны сделать это следующим образом -
allJobs = {'A':[1,2,3],
'B':[2,3,4],
'C':[1,3],
'D':[3,4]}
Jobs = ['A','C']
JobsWithNums = {}
matchJobs =[]
for jobs in allJobs.keys():
if jobs in Jobs:
JobsWithNums[jobs] = allJobs[jobs]
# ^ : Adding the value corresponding to jobs when jobs is present in Jobs list
# You were trying to do with append which is not the valid way to add a key to dictionary
print(JobsWithNums)
Вывод:
{'A': [1, 2, 3], 'C': [1, 3]}
Обратите внимание, что метод добавления не работает со словарем. Так что вы должны использовать это так, как я сделал это в коде. Вы также можете сделать это, используя метод dict.update()
. Обратитесь к следующему фрагменту -
for jobs in allJobs.keys():
if jobs in Jobs:
JobsWithNums.update({jobs:allJobs[jobs]})
# Another possible variant =>
# JobsWithNums.update(jobs=allJobs[jobs])
Но это, вероятно, будет неэффективным способом сделать это по сравнению с первым. Используйте его, только если вам нужно обновить несколько ключей в словаре одновременно.
Альтернативный способ сделать это -
Более короткий (pythoni c) способ сделать это будет следующим образом =>
allJobs = {'A':[1,2,3],'B':[2,3,4],'C':[1,3],'D':[3,4]}
Jobs = ['A','C']
# The below code just says, add job_name:value pair if job_name exists in Jobs list
JobsWithNums = {job_name: value for job_name, value in allJobs.items()
if job_name in Jobs}
print(JobsWithNums)
Вывод:
{'A': [1, 2, 3], 'C': [1, 3]}
Вы можете узнать больше об этом здесь - python docs
Надеюсь, это поможет!