【问题标题】:Division of nested dictionary嵌套字典的划分
【发布时间】:2018-10-14 14:14:26
【问题描述】:

我有两本词典。一个是嵌套字典,另一个是通用字典。我想做一些划分:

dict1 = {'document1': {'a': 3, 'b': 1, 'c': 5}, 'document2': {'d': 2, 'e': 4}}

dict2 = {'document1': 28, 'document2': 36}

我想使用 dict1 中的内部字典值除以 dict2 中匹配文档的值。预期输出将是: 在此输入代码

dict3 = {'document1': {'a': 3/28, 'b': 1/28, 'c': 5/28}, 'document2': {'d': 2/36, 'e': 4/36}}

我尝试使用两个 for 循环来运行每个字典,但是值会重复多次,我不知道如何解决这个问题?有谁知道如何实现这个目标?我将不胜感激!``

【问题讨论】:

    标签: python python-3.x loops dictionary nested-loops


    【解决方案1】:

    在一行中,使用嵌套字典推导:

    dict3 = {doc_key: {k: (v/doc_value) for k, v in dict1[doc_key].items()} for doc_key, doc_value in dict2.items()}
    

    【讨论】:

      【解决方案2】:

      您可以使用字典理解来实现这一点。

      dict3 = {} # create a new dictionary
      
      
      # iterate dict1 keys, to get value from dict2, which will be used to divide dict 1 values
      
      for d in dict1:
             y  = dict2[d] 
             dict3[d] = {k:(v/y) for k, v in dict1[d].items() }
      

      【讨论】:

      • 非常感谢!
      【解决方案3】:

      你可以试试下面的代码

      dict1 = {'document1': {'a': 3, 'b': 1, 'c': 5},
               'document2': {'d': 2, 'e': 4}}
      
      dict2 = {'document1': 28, 'document2': 36}
      
      for k,v in dict1.items():
          for ki,vi in v.items():
              dict1[k][ki] /= dict2[k]
      print(dict1)
      # output
      #{'document1': {'a': 0.10714285714285714, 'b': 0.03571428571428571, 'c': 0.17857142857142858}, 
      #'document2': {'d': 0.05555555555555555, 'e': 0.1111111111111111}}
      

      【讨论】:

      • 非常感谢!我认为这也是一个很好的解决方案!真的很感激
      猜你喜欢
      • 1970-01-01
      • 2018-01-29
      • 2021-12-20
      • 1970-01-01
      • 2018-05-31
      • 2021-12-09
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      相关资源
      最近更新 更多