嵌套字典的划分

时间:2018-05-04 07:00:46

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

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

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循环来运行每个字典,但值会重复多次,我不知道如何解决这个问题?有谁知道如何实现这一目标?我会很感激的!```

3 个答案:

答案 0 :(得分:1)

您可以尝试以下代码

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}}

答案 1 :(得分:1)

您可以使用词典理解来实现这一目标。

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() }

答案 2 :(得分:1)

在一行中,使用嵌套字典理解:

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