プログラムを書いていて疑問に思ったことを質問させてください。少し抽象的になるかもしれませんがお許しください.ある変数a,bがあるときにこのに変数を辞書型{a,b}として別の配列c=[]にappendした場合を考えます.この時cをプリントしたところ[{b,a}]の順で表示されました.これが不思議で質問させていただいています.
私の仮説なのですが辞書型を配列にappendする際に辞書のa,bの順にpushされるので配列cにはaが先に代入され,c=[{b,a}]という形になると考えています.つたない文章で申し訳ありませんがどなたか教えてください.
ちなみに書いているコードがこれです.初めにいくらの借金をしますかと尋ねられるので30000000と入力してください.すると結果が辞書型でリストに内包した状態で返ってきます.その際に上記の疑問が生じました.
python
1import time 2def calc_money(num,c,syakkin): 3 b = num 4 bonus = c 5 y1 = syakkin 6 month=0 7 while month < 360: 8 y2 = y1+y1 * 0.02 / 12.0 - b 9 y1 = y2 10 11 month += 1 12 if month % 6 == 0: 13 y2 = y1 - bonus 14 y1 = y2 15 if y1 <= 0: 16 break 17 return y1,month 18 19if __name__ == '__main__': 20 start = time.time() 21 saiteki_kingaku =[] 22 syakkin = int(input('いくらの借金をしますか?')) 23 24 for c in range(100000,150000,5000): 25 for b in range(5000,110000,1): 26 result = calc_money(b,c,syakkin) 27 if result[0] <=0 and result[1]==360: 28 #print('月'+str(b)+'円の時クリア') 29 30 saiteki_kingaku.append({b,c}) 31 #print(result[0],result[1]) 32 #plt.plot(result[0],result[1],marker='o') 33 34 35 36 print(saiteki_kingaku) 37 38 #plt.show() 39 elapsed_time = time.time() - start 40 print ("elapsed_time:{0}".format(elapsed_time) + "[sec]")
文章のみでは疑問点が伝わりづらいかと。
具体的に単純なコードで例を示すと回答得られやすいと思います。
>>> di = {"a","b"}
>>> print(di)
{'b', 'a'}
となったりするわけです。appendとは関係ないような。
https://docs.python.org/ja/3/whatsnew/3.7.html
> dict オブジェクトの挿入順序を保存するという性質が、公式に Python 言語仕様の一部であると 宣言されました 。
ちなみにバージョンはいくつでしょうか。
返信ありがとうございます.そういう使用という認識でよいのですね.
ちなみにPython 3.7.3です
{a, b} は辞書型じゃなくて集合型ですよ。
勉強不足でした.ご指摘ありがとうございました.
回答2件
あなたの回答
tips
プレビュー