Изменение ключа словаря при сравнении его значений (списка) с другим списком - PullRequest
0 голосов
/ 01 июня 2018

С одной стороны, у меня есть 1 словарь с 100 ключами, а за каждым ключом есть список с большим количеством записей:

dict1 = {"/*** Hello1   ***/": ["1", "2", "3", "4"....],
         "/*** Hello2   ***/": ["1", "2", "3", "4"....]
         "/*** Hello2   ***/": ["1", "2", "3", "4"....]}

Ключами dict являются строки, которые имеютстранный синтаксис (из заголовков .c файлов, поэтому в них есть / ***).

С другой стороны, у меня есть список со всеми ключевыми значениями словаря, но столько основные значения:

list1 = ["Hello3", "Hello2", "Hello1"]

И словарь, и список неупорядочены, и может случиться так, что в dict1 есть ключи, которых в списке list1 нет!

Есть либыстрый способ сравнить ключи dict1 и значения list1 и изменить ключи dict1 на совпадающие записи list1?

Что-то вроде этого?:

for x in list1:
   for y in dict1:
      if x in y:
         dict1[x] = dict1.pop(y)

Ошибка:размер словаря изменился во время итерации

Не понимаю, как я могу это исправить ...

Большое спасибо!

РЕДАКТИРОВАТЬ: возможно ли это только путем создания нового словаряи просто добавив данные значения?Извините, что не упомянул!

1 Ответ

0 голосов
/ 01 июня 2018

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

for x in list1:
   for y in dict1.copy():
      if x in y:
         dict1[x] = dict1.pop(y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...