質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

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

Q&A

解決済

1回答

1448閲覧

python3 辞書型にデータを追加するプログラム

midori_saki

総合スコア29

Python 3.x

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

0グッド

0クリップ

投稿2017/10/09 10:32

python3を学習しています。
参考書にあるコードで理解できない箇所があり、ご教授をお願いしたいです。

質問があるのは、辞書型を学ぶ章でのコードです。
この章に、以下のコードが書いてあります。

open_file = open("point.txt")
raw_data = open_file.read()
open_file.close()
point_data = raw_data.splitlines()
point_dict = {}
for line in point_data:
student_name, points_str = line.split(":")
point_dict[student_name] = points_str

point.txtの中身は、名前と点数が「:」で区切られていて、点数は3つの数字が
「,」で区切られています。
この章では、点数を計算するプログラムを作りながら辞書型を学びましょう、と書いてありました。

そして
point_dict[student_name] = points_str
の説明として、「読み込んだデータを辞書に追加」とありました。

このコードの理解が私には難しく、
この行は何をしているのか、どうして右辺にpoints_strがあるのか、
教えていただけますでしょうか。

どうぞよろしくお願いしますm(_ _)m

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

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

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

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

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

guest

回答1

0

ベストアンサー

辞書(あるいは連想配列)の挙動を理解していれば、難なくわかるかと思います。
調べればよい記事はたくさんありますが()、ここで最低限押さえておくべきことは少ないです。

Python

1>>> # 空の辞書を生成 2... my_dict = {} 3>>> # 辞書の中身は? 4... print(my_dict) 5{} 6 7>>> # 辞書に要素を追加 8... my_dict['ringo'] = 'apple' 9>>> # 辞書の中身は? 10... print(my_dict) 11{'ringo': 'apple'} 12 13>>> # ringoは英語で? 14... print(my_dict['ringo']) 15apple 16>>> # みかんは英語で? 17... print(my_dict['mikan']) 18Traceback (most recent call last): 19 File "<stdin>", line 2, in <module> 20KeyError: 'mikan'

キーに対して値が結び付くのが辞書です。


Python

1point_dict[student_name] = points_str

このように値をセットしておくことで、後々このように点数を参照できます。

Python

1print(point_dict[適当な名前])

挙動に疑問がある場合は、中身を覗いて見ることをお勧めします。
プログラムの途中でprint(point_dict)すれば、具体的な値を知ることが出来ます。


teratailでは、コードを見やすく表示する機能があります。
質問の編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
特にPythonの場合、インデントが崩れるとコードの意味が変わってきます。

投稿2017/10/09 10:43

編集2017/10/09 10:44
LouiS0616

総合スコア35658

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

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

midori_saki

2017/10/09 13:24

丁寧なご回答をありがとうございます! 書いていただいた内容を何度も読み返しました。 プログラムの途中でprint()を使って理解を深めていきます。 またよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問