【问题标题】:Changing key of dictionary while comparing its values (list) with another list在将字典的值(列表)与另一个列表进行比较时更改字典的键
【发布时间】:2018-06-01 09:50:52
【问题描述】:

一方面,我有 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)

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

不知道怎么解决...

非常感谢!

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

【问题讨论】:

    标签: python python-3.x list dictionary


    【解决方案1】:

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

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

    【讨论】:

    • Python 真是一门很棒的语言 :D 非常感谢完美地解决了这个问题!
    猜你喜欢
    • 2013-11-06
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多