добавить ключи и значения в словарь из нескольких объектов с помощью цикла for - PullRequest
0 голосов
/ 03 ноября 2018

Объекты были созданы сканером веб-сайта. В этом примере сохраняются путь к файлу title и image . Вывод следующий:

for article in fetcher.fetch():
    print(article.title + " | " + article.image)

Polarised modular conglomeration | ./img/1.jpg
Cross-group contextually-based middleware | ./img/2.jpg
De-engineered encompassing structure | ./img/3.jpg
Fully-configurable multi-tasking interface | ./img/4.jpg
Versatile eco-centric core | ./img/5.jpg
Optional maximized utilisation | ./img/6.jpg
Open-architected secondary product | ./img/7.jpg

Цель - сохранить title в качестве ключа и image path в качестве значения в словаре

dict = {}

for dictionary in fetcher.fetch():
    dict = {dictionary.title: dictionary.image}

print(dict)
{'Open-architected secondary product': './img/7.jpg'}

Проблема: в словаре хранится только последний элемент. Что не так с моим кодом?

Спасибо

Ответы [ 3 ]

0 голосов
/ 03 ноября 2018

Вы можете назначить отдельную словарную запись, чтобы добавить: вар [ключ] = значение

0 голосов
/ 03 ноября 2018

Чтобы использовать существующий цикл (хотя @N Chauhan хорошо понимает словарь):

for dictionary in fetcher.fetch():
    dict[dictionary.title] = dictionary.image
0 голосов
/ 03 ноября 2018

Ваша проблема в том, что вы перезаписываете dict каждую итерацию. Вместо этого используйте словарь:

article_info = {article.title: article.image
                for article in fetcher.fetch()}

Примечание: всегда воздерживайтесь от использования встроенных имен в качестве переменных, таких как dict в качестве имени переменной. Просто выберите более описательное имя - это в конечном итоге принесет пользу двумя способами:

  • класс по умолчанию dict не затенен.
  • у вас будет лучшее представление о том, что это за переменная, если вы дадите ей хорошее имя вместо смутного.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...