Python 更改字典的键,同时将其值(列表)与另一个列表进行比较

Python 更改字典的键,同时将其值(列表)与另一个列表进行比较,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,一方面,我有一本字典,有100个键,每个键后面都有一个包含更多条目的列表: dict1 = {"/*** Hello1 ***/": ["1", "2", "3", "4"....], "/*** Hello2 ***/": ["1", "2", "3", "4"....] "/*** Hello2 ***/": ["1", "2", "3", "4"....]} dict的键是具有奇怪语法的字符串(在.c文件头之外,这就是为什么它们有/***)

一方面,我有一本字典,有100个键,每个键后面都有一个包含更多条目的列表:

dict1 = {"/*** Hello1   ***/": ["1", "2", "3", "4"....],
         "/*** Hello2   ***/": ["1", "2", "3", "4"....]
         "/*** Hello2   ***/": ["1", "2", "3", "4"....]}
dict的键是具有奇怪语法的字符串(在.c文件头之外,这就是为什么它们有/***)

另一方面,我有一个包含字典所有关键值的列表,但只包含核心值:

list1 = ["Hello3", "Hello2", "Hello1"]
字典和列表都是无序的,可能是dict1中有键,而列表1不包含键

是否有一种快速的方法来比较dict1的键和list1的值,并将dict1的键更改为list1的匹配项

像这样的

for x in list1:
   for y in dict1:
      if x in y:
         dict1[x] = dict1.pop(y)
错误:字典在迭代期间更改了大小

不知道我怎么能修好它

非常感谢


编辑:是否只有创建一个新的字典并简单地添加给定的值才有可能?对不起,没有提及

您可以循环查看您的dict副本,以避免出现特定问题:

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

Python是一种非常棒的语言:非常感谢,它完美地解决了这个问题!