2017-04-13 148 views
0

感谢您的帮助!Python 3:创建字典/为嵌套字典添加值

我尽量简化我的问题: 我有一个嵌套的字典看起来像: 之后,我写了一个for循环来计算嵌套字典的比例值

d={'a' :{ '1990': 10, '1991':20, '1992':30},'b':{ '1990':15, '1991':40, '1992':50}} 
for key in d: 
    rate = d[key]['1990']/d[key]['1992'] 
    print(rate) 

现在我想创建一个新的键值对每个嵌套的字典,因此,在年底,它看起来像:

d = {'a' :{ '1990': 10, '1991':20, '1992':30, 'rate':0.33333},'b':{ '1990':15, '1991':40, '1992':50, 'rate':0.3}} 

或创建一个新的字典看起来像:

d2 = {'a':{'rate':0.3333}, 'b':{'rate':0.3}} 

请帮助您的解决方案最简单,我认为加入现有的字典会更好?

谢谢!

+1

对于同一个字典,您可以在'for'循环中使用'd [key] ['rate'] = rate'。对于新字典,请事先声明字典并在同一个循环中使用'd2 [key] ['rate'] = rate' – kuro

+0

非常感谢!它也在更大的代码中工作! 我尝试了.append和其他很多东西,而且解决方法非常简单 我真的是一个noob – TDot

回答

2

您只需插入钥匙“速度”,这有你的计算值:

d = { 
    'a' :{ '1990': 10, '1991':20, '1992':30}, 
    'b':{ '1990':15, '1991':40, '1992':50} 
} 

for key in d: 
    rate = d[key]['1990']/d[key]['1992'] 
    print(rate) 
    d[key]['rate']=rate 

print d 

仅供参考,如果你使用python2,你应该做的 rate = float(d[key]['1990'])/d[key]['1992']

+1

当我们使用Python 3 – Damien

+0

@Damien时,float部分不是必须的,我错过了它。编辑答案。谢谢! – Squizz