問題
以下のような辞書を作成しようとしています。
result = { 'クイズ1': {'正解': 0, '不正解': 0}, 'クイズ2': {'正解': 0, '不正解': 0}, 'クイズ3': {'正解': 0, '不正解': 0}, 'クイズ4': {'正解': 0, '不正解': 0}, 'クイズ5': {'正解': 0, '不正解': 0}, 'クイズ6': {'正解': 0, '不正解': 0}, 'クイズ7': {'正解': 0, '不正解': 0}, 'クイズ8': {'正解': 0, '不正解': 0}, 'クイズ9': {'正解': 0, '不正解': 0}, 'クイズ10': {'正解': 0, '不正解': 0} }
クイズは多くあり、辞書をfor文で作成したいと思い、以下のコードを書きました。
result = {} ans = {'正解': 0, '不正解': 0} for i in range(10): result[f'クイズ{i+1}'] = ans
そして、クイズ1の正解を+1しようとしたところ、すべての正解が+1されてしまいました。
result['クイズ1']['正解'] = 1 print(result)
# 結果 {'クイズ1': {'正解': 1, '不正解': 0}, 'クイズ2': {'正解': 1, '不正解': 0}, 'クイズ3': {'正解': 1, '不正解': 0}, 'クイズ4': {'正解': 1, '不正解': 0}, 'クイズ5': {'正解': 1, '不正解': 0}, 'クイズ6': {'正解': 1, '不正解': 0}, 'クイズ7': {'正解': 1, '不正解': 0}, 'クイズ8': {'正解': 1, '不正解': 0}, 'クイズ9': {'正解': 1, '不正解': 0}, 'クイズ10': {'正解': 1, '不正解': 0}}
クイズ1だけを1にしたいのですが、どのようにすればよいのでしょうか。
また、辞書を以下のように定義すると問題なくできております。
しかし、すべて書くのは大変ですので別の方法が知りたいです。
result = { 'クイズ1': {'正解': 0, '不正解': 0}, 'クイズ2': {'正解': 0, '不正解': 0}, 'クイズ3': {'正解': 0, '不正解': 0}, 'クイズ4': {'正解': 0, '不正解': 0}, 'クイズ5': {'正解': 0, '不正解': 0}, 'クイズ6': {'正解': 0, '不正解': 0}, 'クイズ7': {'正解': 0, '不正解': 0}, 'クイズ8': {'正解': 0, '不正解': 0}, 'クイズ9': {'正解': 0, '不正解': 0}, 'クイズ10': {'正解': 0, '不正解': 0} } result['クイズ1']['正解'] = 1
# 結果 {'クイズ1': {'正解': 1, '不正解': 0}, 'クイズ2': {'正解': 0, '不正解': 0}, 'クイズ3': {'正解': 0, '不正解': 0}, 'クイズ4': {'正解': 0, '不正解': 0}, 'クイズ5': {'正解': 0, '不正解': 0}, 'クイズ6': {'正解': 0, '不正解': 0}, 'クイズ7': {'正解': 0, '不正解': 0}, 'クイズ8': {'正解': 0, '不正解': 0}, 'クイズ9': {'正解': 0, '不正解': 0}, 'クイズ10': {'正解': 0, '不正解': 0}}
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。