繁体   English   中英

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

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

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

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

字典的键是具有奇怪语法的字符串(在.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)

错误:字典在迭代过程中更改了大小

不知道如何解决...

非常感谢!

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

您可以遍历字典的副本来避免特定的问题:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM