【Python】文字列 辞書の基本操作 【基本講座】
Pythonには、リストやタプルの他に、複数のデータをまとめて管理する組込み型が用意されています。それが辞書です。ここでは辞書型の基本操作を学んでいきましょう。
目次
文字列操作の基本
辞書 dict の基本構造
辞書は、1組のデータをキーと値をペアにして管理しています。SQLをやったことのある人は、なんとなく雰囲気が伝わるかもしれませんね。キーは、重複のない(ユニークな)文字列を使用します。連想配列という言葉を聞いたことがあるかもしれませんが、まさにそれです。
Pythonでは、辞書は、dictクラスのオブジェクトです。文字列やリスト、タプルなどをシーケンス型と呼んでいたのに対して、辞書は、マッピング型と呼ばれていて、区別されている点にも注意が必要です。
辞書オブジェクトを生成すると下記のようになります。
1 |
{ "桜":"春", "海":"夏", "月":"秋", "雪":"冬" } |
ポイントは、「キー:値」と「{}」で囲むことです。
あと、辞書の要素の順番に関してですが、順番が保証されていないため、リテラルで記述した時と順番が異なります。
辞書 dict の基本操作
辞書の要素数を求める
文字列やリスト同様に、len()関数を使えば要素数を求めることができます。
1 2 3 4 5 |
d = { "桜":"春", "海":"夏", "月":"秋", "雪":"冬" } print(len(d)) >> 4 |
辞書から値を取り出したり、設定したい
辞書から値を取り出したい時、それとペアになっているキーを指定することで取り出すことができます。
1 2 3 4 5 |
d = { "桜":"春", "海":"夏", "月":"秋", "雪":"冬" } print(d["月"]) >> 秋 |
辞書は、ミュータブルなので、値を変更できます。
1 2 3 4 5 6 7 |
d = { "桜":"春", "海":"夏", "月":"秋", "雪":"冬" } d["月"] = "Moon" print(d) >> {'桜': '春', '海': '夏', '月': 'Moon', '雪': '冬'} |
辞書の要素(キーと値)を追加したい
辞書に新たなデータを追加するときは、存在しないキーに対して値を設定します。
キーの重複が認められてないためです。もし、キーが重複してしまったら、後の重複キーの値が上書きされます。
1 2 3 4 5 |
d["四季"] = "春夏秋冬" print(d) >> {'桜': '春', '海': '夏', '月': '秋', '雪': '冬', '四季': '春夏秋冬'} |
辞書の要素(キーと値)を削除したい
del 辞書[キー] で削除可能です。
1 2 3 4 5 6 7 |
d = {'桜': '春', '海': '夏', '月': '秋', '雪': '冬', '四季': '春夏秋冬'} del d['四季'] print(d) >> {'桜': '春', '海': '夏', '月': '秋', '雪': '冬'} |
存在しないキーを指定するとKeyError が出ます。
辞書にキーが存在するか確認したい
リストなどと同じように in演算子を使用します。
1 2 3 4 5 |
d = { "桜":"春", "海":"夏", "月":"秋", "雪":"冬" } print("海" in d) >> True |
辞書 dict の要素を取得する
リストで要素が取得できたように、辞書でも要素を取得できるようなメソッドが用意されています。
キーを取得する key()メソッド
1 2 3 4 5 |
d = { "桜":"春", "海":"夏", "月":"秋", "雪":"冬" } print(d.keys()) >> dict_keys(['桜', '海', '月', '雪']) |
値を取得する values()メソッド
1 2 3 4 5 |
d = { "桜":"春", "海":"夏", "月":"秋", "雪":"冬" } print(d.values()) >> dict_values(['春', '夏', '秋', '冬']) |
ここで見慣れないオブジェクトが出てきましたね。
dict_keys() dict_values() は、ビューと呼ばれるオブジェクトです。
これでは、何かと不便だと思いますので、list()コンストラクタでキャストすると型変換できます。
キーと値を取得する items()メソッド
1 2 3 4 5 |
d = { "桜":"春", "海":"夏", "月":"秋", "雪":"冬" } print(d.items()) >> dict_items([('桜', '春'), ('海', '夏'), ('月', '秋'), ('雪', '冬')]) |
返し値がイテラブルなので、for文で要素を取り出せます。
キーと値のペアがタプルで取り出されます。
1 2 3 4 5 6 7 8 9 |
d = { "桜":"春", "海":"夏", "月":"秋", "雪":"冬" } for i, t in d.items(): print(i, t) >> 桜 春 海 夏 月 秋 雪 冬 |
重複を許さない集合set
上述で辞書には重複を許されていないと書きましたが、正確に言うと上書きされるのでエラーになるわけではありません。
しかし、ここで紹介する集合 setクラスでは、要素の重複を許していません。
なぜここで紹介するかというと、{}で囲うため類似として紹介しています。
なお、データ構造は要素であって、キーと値のペアとかではありません。
例えば
1 2 3 4 5 |
l = [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4] print(set(l)) >> {1, 2, 3, 4} |
setクラスのメソッド
よく使うメソッドを表にしてみたので覚えましょう。
add(【要素】) | 【要素】要素を追加する |
remove(【要素】) | 【要素】を削除する |
clear() | 集合【要素】をすべて削除する |
1 2 3 4 5 6 7 |
d = {"A", "B", "C"} d.add("D") print(d) >> {'C', 'A', 'B', 'D'} |
1 2 3 4 5 6 7 |
d = {"A", "B", "C", "D"} d.remove("D") print(d) >> {'C', 'A', 'B'} |
1 2 3 4 5 6 7 |
d = {"A", "B", "C", "D"} d.clear() print(d) >> set() |
集合の演算リスト
set1 | set2 | set1とset2からなる新しい集合を戻す |
set1 & set2 | set1とset2に共通する要素を新しい集合を戻す |
set1 – set2 | set1に含まれているが、set2に含まれない要素の新しい集合を戻す |
set1 ^ set2 | set1とset2のどちらか一方だけに含まれる要素の新しい集合を戻す |
Pythonおすすめ書籍
最初の2冊は初心者向けです。Effectiv Pythonはこの2冊を終えてから読むとかなりわかりやすく感動できると思います。
|
|
|