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





