🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

277閲覧

Python 2重の辞書をupdateする方法

Nomi515

総合スコア8

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/12/02 09:19

編集2019/12/02 09:21

2重の辞書になっているものをfor文から取り出したい。

python

1No = 0 2VV = {} 3WW = {} 4KF = {} 5NE = {} 6JE = {} 7for YY,NN in zip(total1,LL): 8 #print(YY,NN) 9 TT = NN.values() 10 JD = NN.keys() 11 No += 1 12 13 for RR,MA in zip(TT,JD): 14 TF = RR/YY 15 VV[MA] = TF 16 WW.update(VV) 17 18 19 JE[No] = WW 20 UW = JE 21 print(UW) 22 23 KF.update(UW) 24 JE.clear() 25 26 WW.clear() 27 VV.clear() 28 29print(KF) 30

UWを出力すると、以下のようになる
実際は1~710個の記事データが出力されているが、長くなるため710番目のみ記載

{710: {'コーエーテクモゲームス': 0.004405286343612335, 'は': 0.022026431718061675, '、': 0.030837004405286344, '9': 0.004405286343612335, '月': 0.006607929515418502, '27': 0.0022026431718061676, '日': 0.004405286343612335, '(': 0.004405286343612335, 'Steam': 0.0022026431718061676, '版': 0.0022026431718061676, '10': 0.0022026431718061676, '16': 0.0022026431718061676, ')': 0.004405286343612335, 'に': 0.03303964757709251, '発売': 0.0022026431718061676, 'を': 0.030837004405286344, '予定': 0.004405286343612335, 'する': 0.028634361233480177, 'て': 0.004405286343612335, 'いる': 0.004405286343612335, 'プレイステーション': 0.0022026431718061676, ' ': 0.048458149779735685, '4': 0.0022026431718061676, '/': 0.0022026431718061676, 'Nintendo': 0.0022026431718061676, 'Switch': 0.0022026431718061676, '用': 0.0022026431718061676, 'タクティカルアクション': 0.0022026431718061676, '「': 0.022026431718061675, '無双': 0.006607929515418502, 'OROCHI': 0.006607929515418502, '3': 0.006607929515418502, '」': 0.022026431718061675, 'の': 0.04405286343612335, '最新': 0.0022026431718061676, '情報': 0.0022026431718061676, '公開': 0.00881057268722467, 'た': 0.03303964757709251, '。': 0.05066079295154185, '今回': 0.004405286343612335, '新': 0.0022026431718061676, 'キャラクター': 0.006607929515418502, 'ペルセウス': 0.0022026431718061676, '紹介': 0.0022026431718061676, '動画': 0.0022026431718061676, 'が': 0.03303964757709251, 'れる': 0.011013215859030838, 'CV': 0.004405286343612335, '下野': 0.0022026431718061676, '紘': 0.0022026431718061676, 'さん': 0.0022026431718061676, '務める': 0.0022026431718061676, '他': 0.0022026431718061676, 'も': 0.0022026431718061676, 'ストーリー': 0.004405286343612335, 'キー': 0.006607929515418502, 'と': 0.013215859030837005, 'なる': 0.013215859030837005, '特別': 0.0022026431718061676, 'だ': 0.013215859030837005, '姿': 0.004405286343612335, 'へ': 0.006607929515418502, '変化': 0.004405286343612335, '神格': 0.006607929515418502, '化': 0.006607929515418502, 'について': 0.0022026431718061676, '関': 0.004405286343612335, '銀': 0.004405286343612335, '屏': 0.004405286343612335, '対象': 0.0022026431718061676, 'こと': 0.0022026431718061676, '明らか': 0.0022026431718061676, 'さらに': 0.0022026431718061676, '神': 0.00881057268722467, '力': 0.006607929515418502, '得る': 0.004405286343612335, 'アイテム': 0.0022026431718061676, '神器': 0.0022026431718061676, '2': 0.0022026431718061676, '種': 0.0022026431718061676, 'オリュンポス': 0.0022026431718061676, '英雄': 0.004405286343612335, 'ある': 0.00881057268722467, 'ゼウス': 0.004405286343612335, '人': 0.004405286343612335, 'ダナエー': 0.0022026431718061676, '間': 0.0022026431718061676, '生まれる': 0.0022026431718061676, '半': 0.0022026431718061676, 'メドゥーサ': 0.0022026431718061676, '殺し': 0.0022026431718061676, '成し遂げる': 0.0022026431718061676, 'として': 0.0022026431718061676, '崇める': 0.0022026431718061676, 'られる': 0.0022026431718061676, 'よう': 0.0022026431718061676, 'による': 0.0022026431718061676, '人間': 0.0022026431718061676, '界': 0.0022026431718061676, '介入': 0.0022026431718061676, '憂う': 0.0022026431718061676, '世界': 0.0022026431718061676, '混乱': 0.0022026431718061676, '防ぐ': 0.0022026431718061676, 'ため': 0.0022026431718061676, '立ち上がる': 0.0022026431718061676, '8': 0.0022026431718061676, '名': 0.0022026431718061676, '身': 0.004405286343612335, '宿す': 0.0022026431718061676, '遂げる': 0.0022026431718061676, '新た': 0.0022026431718061676, ':': 0.0022026431718061676, '三': 0.0022026431718061676, '上枝': 0.0022026431718061676, '織る': 0.0022026431718061676, '決定': 0.004405286343612335, '大変': 0.0022026431718061676, '器量': 0.0022026431718061676, '良い': 0.0022026431718061676, '護身': 0.0022026431718061676, '術': 0.0022026431718061676, 'つもり': 0.0022026431718061676, 'で': 0.0022026431718061676, '習う': 0.0022026431718061676, '武芸': 0.0022026431718061676, '才能': 0.0022026431718061676, '発揮': 0.0022026431718061676, 'とてつもない': 0.0022026431718061676, '怪力': 0.0022026431718061676, '本人': 0.0022026431718061676, '気づく': 0.0022026431718061676, 'ない': 0.0022026431718061676, '守護神': 0.0022026431718061676, 'ヘル': 0.0022026431718061676, 'メス': 0.0022026431718061676, '持つ': 0.004405286343612335, '翼': 0.0022026431718061676, '生える': 0.0022026431718061676, '魔法': 0.0022026431718061676, '靴': 0.0022026431718061676, 'つける': 0.0022026431718061676, '者': 0.0022026431718061676, '風': 0.0022026431718061676, '追い越す': 0.0022026431718061676, '速度': 0.0022026431718061676, '仙人': 0.0022026431718061676, '創り出す': 0.0022026431718061676, '神秘': 0.0022026431718061676, '宝': 0.0022026431718061676, 'ひとつ': 0.0022026431718061676, '大地': 0.0022026431718061676, '揺るがす': 0.0022026431718061676, '山': 0.0022026431718061676, '吹き飛ばす': 0.0022026431718061676, '開催': 0.004405286343612335, '中': 0.0022026431718061676, '店頭': 0.004405286343612335, '体験': 0.004405286343612335, '会': 0.004405286343612335, '追加': 0.004405286343612335, '日程': 0.004405286343612335, '試遊': 0.0022026431718061676, '『': 0.0022026431718061676, '』': 0.0022026431718061676, '特製': 0.0022026431718061676, '缶': 0.0022026431718061676, 'バッジ': 0.0022026431718061676, 'ランダム': 0.0022026431718061676, '配布': 0.0022026431718061676, '数': 0.0022026431718061676, '限り': 0.0022026431718061676, 'なくなる': 0.0022026431718061676, '次第': 0.0022026431718061676, '終了': 0.0022026431718061676, '【': 0.0022026431718061676, '】': 0.0022026431718061676, '東京': 0.0022026431718061676, '都': 0.0022026431718061676, '池袋': 0.0022026431718061676, '飲食': 0.0022026431718061676, '店': 0.0022026431718061676, 'KOEI': 0.0022026431718061676, 'TECMO': 0.0022026431718061676, 'CAFE': 0.0022026431718061676, '&': 0.0022026431718061676, 'DINING': 0.0022026431718061676, 'コラボレーション': 0.0022026431718061676, '上旬': 0.0022026431718061676, 'ちなむ': 0.0022026431718061676, '店内': 0.0022026431718061676, '装飾': 0.0022026431718061676, 'や': 0.004405286343612335, '限定': 0.0022026431718061676, 'メニュー': 0.0022026431718061676, '楽しめる': 0.0022026431718061676, '詳細': 0.0022026431718061676, '期間': 0.0022026431718061676, '予約': 0.0022026431718061676, '方法': 0.0022026431718061676, 'など': 0.0022026431718061676, '後日': 0.0022026431718061676, '©': 0.0022026431718061676, 'All': 0.0022026431718061676, 'rights': 0.0022026431718061676, 'reserved': 0.0022026431718061676, '.': 0.0022026431718061676}}

これをfor文の外でも表示できるようにしたいため、別の空の辞書を作成しupdateを用いて試してみたが、以下のようになった
print(KF)

{1: {}, 2: {}, 3: {}, 4: {}, 5: {}, 6: {}, 7: {}, 8: {}, 9: {}, 10: {}, 11: {}, 12: {}, 13: {}, 14: {}, 15: {}, 16: {}, 17: {}, 18: {}, 19: {}, 20: {}, 21: {}, 22: {}, 23: {}, 24: {}, 25: {}, 26: {}, ~~長くなったため省略~~ 671: {}, 672: {}, 673: {}, 674: {}, 675: {}, 676: {}, 677: {}, 678: {}, 679: {}, 680: {}, 681: {}, 682: {}, 683: {}, 684: {}, 685: {}, 686: {}, 687: {}, 688: {}, 689: {}, 690: {}, 691: {}, 692: {}, 693: {}, 694: {}, 695: {}, 696: {}, 697: {}, 698: {}, 699: {}, 700: {}, 701: {}, 702: {}, 703: {}, 704: {}, 705: {}, 706: {}, 707: {}, 708: {}, 709: {}, 710: {}}

keyはupdateされているが、valueが空白になってしまっている。恐らく2重の辞書型であるためだと考えているが、解決手段が分からないので、教えていただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Python

UW = JE
...
JE.clear()

UWとJEは同じオブジェクトを束縛しているので、一方の変更はもう一方にも波及します。

Python

1>>> dct1 = {1: 'one', 2: 'two'} 2>>> dct2 = dct1 3>>> 4>>> print(dct1) 5{1: 'one', 2: 'two'} 6>>> print(dct2) 7{1: 'one', 2: 'two'} 8>>> 9>>> dct2.clear() 10>>> print(dct1) 11{}

同じオブジェクトを使いまわしているのが問題なので、次のように書けば良いでしょう。

Python

1for YY,NN in zip(total1,LL): 2 UW = {} 3 4 ... 5 6 KF.update(UW)

WW, VVについても同様です。

投稿2019/12/02 11:04

LouiS0616

総合スコア35668

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Nomi515

2019/12/02 11:17

回答有難うございます。同じオブジェクトを使いまわしているのが原因とのことですが、具体的にどのようにプログラムを改善すると宜しいのでしょうか?
LouiS0616

2019/12/02 11:26

回答に書いてあるとおり、ループ内で毎度オブジェクトを作るようにすれば良いです。
Nomi515

2019/12/02 11:31

clearすると、消えてしまうため、毎度毎度作り直すことでそれを防ぐということでしょうか?
LouiS0616

2019/12/02 11:35

clearしなくても、毎回まっさらな状態で辞書を使うためです。 その点では、辞書.clear() の代わりに 辞書 = {} と書いても良いでしょう。
Nomi515

2019/12/02 11:49

分かりました!無事プログラムも動きました。有難うございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問