2017-04-15 11 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で変更された後)を、描画機能を使用してグラフを移動する固定点としてプロットしたいが、これを把握することはできない。例えば、第1のva1値は第1のva2値となる。

+0

で割ることができないように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) 

3つしかないので、それぞれの辞書キーにはそれぞれのリストが別々に作成されています。これは主に、キーに対する各リストがどのように生成されているのかを変更しているという側面が原因です。 `VA1 = VA1 + VA3 [ "VA3"]/dt`:

またこのエラーのために厳密に0

+0

ブーム!私はその行を削除したが、完璧な人の感謝のためにva2の値を増やす必要はなかった – Yoalpa

+0

ああ、私はあなたがそれを必要と思っていた。お役に立てて嬉しいです。 – Aklys