2017-04-15 104 views
-2

我试图通过15个不同的va3值除以循环dt的迭代来增加15个不同va1值的值。Python:增加循环中的字典值

import random as r 

n = 15 
new_dict = {k: {'va1': r.randint(0, 50), 'va2': r.randint(0, 15), 'va3': r.randint(0, 10)} for k in range(n)} 

for dt in range(100): 
    for va1, va3 in new_dict.items(): 
     va1 = va1 + va3/dt 
print(new_dict) 

我得到的错误:unsupported operand type(s) for /: 'dict' and 'int',我认为这意味着你可以在一个字典值由整数无法操作,但肯定有一个解决方法呢?用列表来代替?最后,我想绘制相应的va1,va2值(在va1被va3/dt修改后)作为使用绘图函数在图上移动的固定点,但无法弄清楚。例如第一个va1值将与第一个va2值一起进行。

+0

严格此错误的划分:'VA1 = VA1 + VA3 [ “VA3”]/dt'。但是对于一个完整的解决方案(至少我是如何从这个问题中理解的):'va3 [“va1”] + = va3 [“va3”]/dt'。 – CristiFati

回答

0

我不确定这是否是你想要做的。但这可能会帮助你解决你的问题。

import random as r 

n=15 
new_dict = {'va1': [r.randint(0,50) for k in range(n)], 'va2': [r.randint(0,15) for k in range(n)], 'va3': [r.randint(0,10) for k in range(n)]} 
print(new_dict['va1']) 
for dt in range(1,101): 
    for i in range(n): 
     new_dict['va1'][i] = new_dict['va1'][i] + new_dict['va3'][i]/dt 
     new_dict['va2'][i] = new_dict['va2'][i] + new_dict['va3'][i]/dt 
    print(new_dict) 

我为每个字典键分别创建了每个列表,因为只有三个。我这样做主要是因为你正在改变每个列表对一个密钥产生的方面。

另外改变范围dt的,因为你不能用0

+0

繁荣!我并不需要va2值增加,所以我删除了这条线,但完美的人谢谢 – Yoalpa

+0

啊,我的坏想法,你需要的。很高兴我能帮上忙。 – Aklys