たくさんの値を1つにまとめる
Python のリストとは、複数の値を順番に並べて、1つの変数に入れたものです。辞書は、名前(キー)で値を引き出せる入れ物です。
友だち10人の名前を、変数10個に分けて書くのは大変です。リストなら1つで足ります。名前から電話番号を引くなら、辞書が向いています。
このレッスンのゴール
メモ
リストと辞書に値をまとめて入れ、取り出して使うことができる。
キーワード
| ことば | いみ | れい |
|---|---|---|
| リスト | 値を順番に並べた入れ物 | [10, 20, 30] |
| 添字 | リストの何番目かを表す番号。0から始まる | names[0] |
| スライス | リストの一部を取り出すこと | nums[1:3] |
| 辞書 | キーと値の組を入れる入れ物 | {"tea": 150} |
| キー | 辞書で値を探すための名前 | |
| 要素 | リストや辞書に入っている1つ1つの値 |
学生が入力するセルは、このプレビューでは空白です。
リストは角かっこで作り、番号で取り出す
names = ["Aki", "Ben", "Chi"] のように、角かっこの中に、カンマで区切って書きます。len(names) で、要素の数が分かります。
取り出すには、names[1] のように番号を書きます。番号は0から数えるので、names[1] は2番目の "Ben" です。
2番目の名前と、要素の数
python3 -c "names = ['Aki', 'Ben', 'Chi']; print(names[1], len(names))"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
例: 番号とスライス
| 書き方 | 結果 | 意味 |
|---|---|---|
| nums[0] | 10 | 最初の要素 |
| nums[-1] | 50 | 最後の要素 |
| nums[1:4] | [20, 30, 40] | 1番から3番まで。4番は含まない |
| nums[:2] | [10, 20] | 先頭から2つ |
学生が入力するセルは、このプレビューでは空白です。
よくある間違い
注意
「リストの最初は1番」と考える人がいます。Python の番号は0から始まります。要素が5つのリストの最後は、5番ではなく4番です。5番を指定すると、エラーになります。
append で足し、for で全部見る
prices.append(60) と書くと、リストの最後に60が足されます。
for price in prices: と書くと、要素が先頭から順に price に入り、下げた行が要素の数だけ実行されます。番号を使わなくても、全部を見られます。
値段を足して合計を出す
# 買い物リストの値段を、順に足します。
prices = [120, 80, 250, 90]
prices.append(60)
total = 0
for price in prices:
total = total + price
print("品数:", len(prices))
print("合計:", total)
# 数を 1 つ足して、もう一度実行しましょう。
append で足したリストを表示する
python3 -c "items = ['a']; items.append('b'); print(items)"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
辞書はキーで値を引き出す
price = {"tea": 150, "cake": 300} のように、波かっこの中に、キー: 値 の組をカンマで並べます。
price["cake"] と書くと、キー "cake" の値が出ます。price["pie"] = 280 と書くと、新しい組が足されます。"tea" in price で、キーがあるかが分かります。
キーで値を引き出す
python3 -c "price = {'tea': 150, 'cake': 300}; print(price['cake'])"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
辞書で言葉の回数を数える
text.split() は、文字列を空白で切って、言葉のリストにします。
数えるときは、辞書を空で作ります。言葉がすでにキーにあれば、値に1を足します。なければ、値を1で新しく作ります。
例: "a b a" を数えるトレース表
| 言葉 | キーにあるか | したこと | 辞書の中身 |
|---|---|---|---|
| a | ない | 1で作る | {"a": 1} |
| b | ない | 1で作る | {"a": 1, "b": 1} |
| a | ある | 1を足す | {"a": 2, "b": 1} |
学生が入力するセルは、このプレビューでは空白です。
言葉の回数を数える
# ログの言葉を、種類ごとに数えます。
text = "INFO ERROR INFO WARN INFO ERROR"
words = text.split()
counts = {}
for word in words:
if word in counts:
counts[word] = counts[word] + 1
else:
counts[word] = 1
for key in counts:
print(key, counts[key])
# text に WARN を 2 つ足して、もう一度実行しましょう。