关于python:在将字典的值(列表)与另一个列表进行比较时更改字典的键

Changing key of dictionary while comparing its values (list) with another list

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

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

dict 的键是具有奇怪语法的字符串(在 .c 文件头中,这就是为什么它们在其中包含 /***)。

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

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

字典和列表都是无序的,可能是dict1中有键,而list1不包含!

有没有一种快速的方法来比较 dict1 的键和 list1 的值,并将 dict1 的键更改为 list1 的匹配条目?

像这样?:

1
2
3
4
for x in list1:
   for y in dict1:
      if x in y:
         dict1[x] = dict1.pop(y)

错误:迭代期间字典大小改变

不明白我该如何解决它...

非常感谢!

编辑:是否只能通过创建新字典并简单地添加给定值来实现?抱歉没提!


您可以遍历您的 dict 副本以避免您的特定问题:

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