LoginSignup
1
3

More than 1 year has passed since last update.

Pythonチートシート - Dict型の使い方一覧

Posted at

Pythonのディクショナリーについて¶

dict型のデータは、一意のキーと値のペアを使って管理される型です。
自然言語処理を行う際や、言語を翻訳したいときに役立ちます。

言語によってはディクショナリーはハッシュ・連想配列と呼ばれます。 dict型のデータ構造は、ハッシュ表という数値型のテーブルをキー・値と対応させるという 内部構造となっています。そのためdict型のデータはハッシュアブルな型を用いなければならりません。

Pythonではint, str, bytes, tuple, frozenset等がハッシュアブルな型となっていて、通常、dict型のキーはintかstr型とします。

ディクショナリーの内容を参照する

d = {"apple":"りんご", "orange":"みかん", "melon":"メロン"}

d["apple"] = "アップル"
d["strawberry"] = "いちご"

#setdefaultメソッドはキーが存在しない場合のみ値を設定するのに用いる
d.setdefault("apple","Good!!")
d.setdefault("watermelon","Good!!")

print(d)
{'apple': 'アップル', 'orange': 'みかん', 'melon': 'メロン', 'strawberry': 'いちご', 'watermelon': 'Good!!'}

ディクショナリーから値を取得する(get, pop, popitem)

getは値を取得、popは値を取得して削除(取り出し)する
popitem()は値をLIFOで取り出す(※Python3.7以降のみ)
getする際にはKeyErrorがおこらないよう、規定値("×")を指定する

print(d.get("apple", "×"))
print(d.get("pear", "×"))
print(d.pop("melon", "×"))
print(d.popitem())
りんご
×
メロン
('orange', 'みかん')

ディクショナリーのキーを判定(in)

特定のキーが含まれるかを判定したい時は、in演算子を使う

d = {"apple":"りんご", "orange":"みかん", "melon":"メロン"}
print("orange" in d)
print("pear" in d)
True
False

ディクショナリーのキーを削除(del, clear)

delで特定キーの削除、clearで全てのキーの削除を行う

d = {"apple":"りんご", "orange":"みかん", "melon":"メロン"}

del d["orange"]
print(d)

d.clear()
print(d)
{'apple': 'りんご', 'melon': 'メロン'}
{}

ディクショナリーの内容を列挙する(for...in...)

items, keys, valuesの戻り値は列挙可能な型となっている

d = {"Apple":"リンゴ","Orange":"ミカン","Melon":"メロン"}

#項目を列挙
for item in d.items():
    print(item)
#キーと値を抽出して列挙
for key, value in d.items():
    print(key, " : ", value)

#キーを列挙
for key in d.keys():
    print(key)
#値を列挙
for value in d.values():
    print(value)
('Apple', 'リンゴ')
('Orange', 'ミカン')
('Melon', 'メロン')
Apple  :  リンゴ
Orange  :  ミカン
Melon  :  メロン
Apple
Orange
Melon
リンゴ
ミカン
メロン

ディクショナリーのキーを比較する(&, |)

&, |等の演算子を使えば異なる辞書のkeysの積集合・和集合を求めることができる

d1 = {"Apple":"リンゴ","Orange":"ミカン","Melon":"メロン"}
d2 = {"Grape":"ブドウ","Orange":"ミカン","Pear":"なし","Apple":"リンゴ"}

print(d1.keys() & d2.keys())
{'Orange', 'Apple'}

ディクショナリーの初期化判定をする(defaultdict)

collectionsモジュール、defaultdictを使うことで初期値を管理する

import collections

#リストに何個同じキーが含まれているかを判定し、キーと対応する値をdict型に格納する
data = ["01","02","02","03","03"]
result = collections.defaultdict(int)

for key in data:
    result[key] += 1

print(result)
defaultdict(<class 'int'>, {'01': 1, '02': 2, '03': 2})

ディクショナリーの内包表記(for...in...)

リスト・セットの内包表記と同様、ディクショナリーも内包表記にすることができる。他のディクショナリー型を別のディクショナリーにコピーする、等の用途で使える。リスト型やセット型の内容をディクショナリー型にコピーする事もできる

d = {"Apple":"リンゴ","Orange":"ミカン","Melon":"メロン"}
result = {value: key for key, value in d.items()}
print(result)
'リンゴ': 'Apple', 'ミカン': 'Orange', 'メロン': 'Melon'}1

次回はtuple型の使い方をまとめてチートシートを作ろうと思います。この調子で頑張りますね。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3