リスト内包は、Python でたった 1 行のコードでリストを作成する便利で高速な方法です。
Pythonでは、辞書は、格納されたデータの各要素がキーに関連付けられているようなデータを格納するためのデータ構造である。
辞書のデータ構造により、キーを使って非常に効率的にデータを照会できます。
内包の考え方は、Python のリストだけに特有のものではありません。
内包の考え方は、Pythonのリストに限ったことではなく、データサイエンスでよく使われるデータ構造の1つである辞書も内包を行うことができます。
Python では、リストは角括弧で、辞書は中括弧 {} で定義されることを覚えておいてください。 リスト内包で使われた考え方は、ディクショナリ内包の定義にも引き継がれています。
- {key:value for i in list}
新しい辞書を簡単に作成するために Dict 理解を使用する 5 つの簡単な例を見てみましょう。
Dict 理解の例 1
数値のリストから dict 理解を作成する簡単な例を見てみましょう。
ここでは、数値のリストを使用し、キーとして数値の文字列値、値として数値を持つ辞書を作成することにします。
# dict comprehension to create dict with numbers as values>{str(i):i for i in }{'1': 1, '3': 3, '2': 2, '5': 5, '4': 4}
dict内包の例2
果物のリストがあるとしましょう。dict内包を使って、果物、リスト要素をキー、各文字列の長さを値とする辞書を作成します。
# create list of fruits>fruits = # dict comprehension to create dict with fruit name as keys>{f:len(f) for f in fruits}{'cherry': 6, 'mango': 5, 'apple': 5, 'banana': 6}
辞書の理解例3
リストの要素をキー、最初の文字が大文字の要素を値とする辞書をdict理解で作ってみましょう。
>{f:f.capitalize() for f in fruits}{'cherry': 'Cherry', 'mango': 'Mango', 'apple': 'Apple', 'banana': 'Banana'}
辞書の理解例4
辞書理解では列挙関数を使ってみましょう。
ここでは、リストに対してenumerate関数を使って、インデックスとリスト要素のタプルを作成し、それを使ってdict comprehensionで辞書を作成します。 リストの要素をキーとし、要素のインデックスを値とする辞書を作成する。 要素のインデックスを持つこのような辞書は、さまざまなシナリオでしばしば役立ちます。
# dict comprehension example using enumerate function>{f:i for i,f in enumerate(fruits)}{'cherry': 3, 'mango': 1, 'apple': 0, 'banana': 2}
辞書理解の例 5
辞書理解の別の使用法は、既存の辞書でキーと値を逆転させることです。 時には、既存のディレクトリから新しい辞書を作成し、最初の辞書のキーと値のペアの役割を新しい辞書で逆にしたい場合があります。
# dict comprehension example to reverse key:value pair in a dictionary>f_dict = {f:i for i,f in enumerate(fruits)}>f_dict{'apple': 0, 'banana': 2, 'cherry': 3, 'mango': 1}# dict comprehension to reverse key:value pair in a dictionary>{v:k for k,v in f_dict.items()}{0: 'apple', 1: 'mango', 2: 'banana', 3: 'cherry'}
辞書のアイテム関数を使って既存の辞書のキーと値のペアを取得し、元の辞書のキーが新しい辞書の値となり、その逆の新しい辞書を作成しました。
Dict Comprehension Example 6: How To Delete Selected Keys from Dictionary using Dict Comprehension?
辞書があり、特定のキーと値のペアを削除して新しい辞書を作成する場合を考えてみましょう。
上で作成した「fruit」辞書を使用しましょう。
fruits = f_d1 ={f:f.capitalize() for f in fruits}f_d1
ディクション理解を使って、fruit 辞書から apple と banana という 2 つのキーとその値を削除してみましょう。
# keys to be removed>remove_this = {'apple','cherry'}# dict comprehension example to delete key:value pairs in a dictionary>{key:f_d1 for key in f_d1.keys() - remove_this}{'banana': 'Banana', 'mango': 'Mango'}
dictのkeyオブジェクトをset操作で使うだけで、appleとcherryのキーを削除し、新しい辞書にはバナナとマンゴーだけが含まれるようになりました
。