如何比较字典并根据它们的键和值计算比率
How to compare dictionaries and calculate a ratio based on their keys and values
我有一本字典作为
dict1={'A': ['15', '3'],'B': ['14', '3']}
每个键的第一个值是 我的总数 所以 A 的总数是 15,B 的总数是 14。
我有另一个字典 dict2 as
dict2={'A': {'A.X': '20.41%',
'A.Y': '30.59%',
'B.X': '20.09%',
'B.Y': '10.00%',
'C.X': '8.04%',
'C.Y': '10.87%'},
'B': {'B.X': '35.15%',
'B.Y': '50.85%',
'C.X': '0.00%',
'C.Y': '0.00%',
'D.X': '14.00%',
'D.Y': '0.00%'}}
我想将每个 dict1-key 的总和应用于相同键的 dict2 值以获得总和的比率,例如
dict3={'A': {'A.X': '3.06',
'A.Y': '4.59',
'B.X': '3.01',
'B.Y': '1.5',
'C.X': '1.2',
'C.Y': '1.63'},
'B': {'B.X': '4.92',
'B.Y': '7.12',
'C.X': '0',
'C.Y': '0',
'D.X': '1.96',
'D.Y': '0'}}
我想我可以从
开始
new_dict = { key : dict1[key]*dict2[key][0] for key in dict1 if key in dict2 }
但这没有用。任何帮助表示赞赏
p.s 我是 python 的新手,在此先感谢。
你可以通过两层迭代得到你想要的结果:
>>> dict3 = {}
>>> for k1, v1 in dict2.items():
... total = int(dict1[k1][0]) / 100
... dict3[k1] = {k2: f'{float(v2[:-1]) * total:.3g}' for k2, v2 in v1.items()}
...
>>> dict3
{'A': {'A.X': '3.06', 'A.Y': '4.59', 'B.X': '3.01', 'B.Y': '1.5', 'C.X': '1.21', 'C.Y': '1.63'}, 'B': {'B.X': '4.92', 'B.Y': '7.12', 'C.X': '0', 'C.Y': '0', 'D.X': '1.96', 'D.Y': '0'}}
我有一本字典作为
dict1={'A': ['15', '3'],'B': ['14', '3']}
每个键的第一个值是 我的总数 所以 A 的总数是 15,B 的总数是 14。 我有另一个字典 dict2 as
dict2={'A': {'A.X': '20.41%',
'A.Y': '30.59%',
'B.X': '20.09%',
'B.Y': '10.00%',
'C.X': '8.04%',
'C.Y': '10.87%'},
'B': {'B.X': '35.15%',
'B.Y': '50.85%',
'C.X': '0.00%',
'C.Y': '0.00%',
'D.X': '14.00%',
'D.Y': '0.00%'}}
我想将每个 dict1-key 的总和应用于相同键的 dict2 值以获得总和的比率,例如
dict3={'A': {'A.X': '3.06',
'A.Y': '4.59',
'B.X': '3.01',
'B.Y': '1.5',
'C.X': '1.2',
'C.Y': '1.63'},
'B': {'B.X': '4.92',
'B.Y': '7.12',
'C.X': '0',
'C.Y': '0',
'D.X': '1.96',
'D.Y': '0'}}
我想我可以从
开始new_dict = { key : dict1[key]*dict2[key][0] for key in dict1 if key in dict2 }
但这没有用。任何帮助表示赞赏 p.s 我是 python 的新手,在此先感谢。
你可以通过两层迭代得到你想要的结果:
>>> dict3 = {}
>>> for k1, v1 in dict2.items():
... total = int(dict1[k1][0]) / 100
... dict3[k1] = {k2: f'{float(v2[:-1]) * total:.3g}' for k2, v2 in v1.items()}
...
>>> dict3
{'A': {'A.X': '3.06', 'A.Y': '4.59', 'B.X': '3.01', 'B.Y': '1.5', 'C.X': '1.21', 'C.Y': '1.63'}, 'B': {'B.X': '4.92', 'B.Y': '7.12', 'C.X': '0', 'C.Y': '0', 'D.X': '1.96', 'D.Y': '0'}}