Python でのネストされた辞書内包表記

Zeeshan Afridi 2023年6月21日
  1. Python 辞書理解
  2. Python のネストされた辞書内包表記
Python でのネストされた辞書内包表記

Python Dictionary Comprehension は、既存の辞書から新しい辞書を作成できる強力なツールです。 リスト内包表記に似ていますが、リストを作成する代わりに辞書を作成します。

辞書内包表記は、辞書を作成するための非常に簡潔な方法であり、1つのタプルにキーと値が含まれる 2つのタプルから辞書を作成する場合に役立ちます。

このチュートリアルでは、Python のネストされた辞書内包表記、その使用方法、および Python で使用する利点について説明します。

Python 辞書理解

辞書理解は、フィルタリング、変換、新しい辞書の作成など、辞書に対してさまざまな操作を実行するために使用できる強力なツールです。

辞書内包表記を使用すると、他の辞書または他の iterable データ型から辞書を作成できます。 また、値だけでなく、キーと値のペアを指定することもできます。

辞書内包表記は、既存の辞書から新しい辞書を作成するために最も一般的に使用されます。 たとえば、既存のディクショナリのキーまたは値のみを含む新しいディクショナリを作成できます。

2つの既存の辞書のキーと値を含む新しい辞書を作成することもできます。 辞書内包表記を使用して、既存の辞書を操作することもできます。

たとえば、辞書の項目を追加または削除したり、既存の項目の値を変更したりできます。

コード例:

square_dict = dict()

for num in range(1, 4):
    square_dict[num] = num * num

print(square_dict)

# dictionarycomprehension example
square_dict = {num: num * num for num in range(1, 4)}

print(square_dict)

出力:

{1: 1, 2: 4, 3: 9}
{1: 1, 2: 4, 3: 9}

辞書理解の構文

辞書内包表記は、Python で他のデータ構造から辞書を作成するための便利なツールです。 構文は、{key: value for (key, value) in iterable} と読むのは簡単です。

コード例:

# The price of the item in dollars
old_price = {"price of milk": 2, "price of coffee": 4, "price of bread": 3.5}

dollar_to_pound = 0.76
new_price = {item: value * dollar_to_pound for (item, value) in old_price.items()}
print(new_price)

出力:

{'price of milk': 1.52, 'price of coffee': 3.04, 'price of bread': 2.66}

Python のネストされた辞書内包表記

ネストされた辞書内包表記は、一連のキーと値のペアを反復処理し、それらのペアから新しい辞書を構築することによって機能します。 新しい辞書は、dict.updatedict.fromkeys などの任意のマッピング関数を使用して構築できます。

たとえば、次のデータ構造を考えてみましょう。

data = {"a": 1, "b": 2, "c": 3, "d": 4}

このデータ構造のキーのみを保持する新しい辞書を合成するには、次のネストされた辞書内包表記を使用できます。

new_dict = {k: data[k] for k in data}
print(new_dict)

次のような新しい辞書が作成されます。

{'a': 1, 'b': 2, 'c': 3, 'd': 4}

次のネストされた辞書内包表記を使用して、このデータ構造の値のみを保持する新しい辞書を合成できます。

new_dict = {k: v for k, v in data.items()}

次のような新しい辞書が作成されます。

{'a': 1, 'b': 2, 'c': 3, 'd': 4}

ご覧のとおり、ネストされた辞書内包表記は、複雑なデータ構造を迅速かつ効率的に処理および操作できる強力なツールです。 また、アドホック データ構造を作成する簡単な方法でもあります。

Python でのネストされた辞書内包表記の構文

ネストされた辞書内包表記を作成するには、最初の辞書内包表記の括弧内に別の辞書内包表記を入れます。

次の例では、辞書の辞書を作成します。各内部辞書には、異なる fruit に関する情報が含まれています。

{key:value for key, value in outer_dict.items() if key =='fruit'}
{key:{'name':fruit['name'], 'colour':fruit['colour']} for key,fruit in outer_dict.items() if key == 'fruit'}

上記の最初の辞書内包表記は、fruits の名前であるキーと、それらの fruitscolors である値を持つ辞書を作成します。

上記の 2 番目の辞書内包表記は同じことを行いますが、追加レベルのネストを追加して、辞書の辞書を作成します。

コード例:

dictionary = {k1: {k2: k1 * k2 for k2 in range(1, 3)} for k1 in range(2, 5)}
print(dictionary)

出力:

{2: {1: 2, 2: 4}, 3: {1: 3, 2: 6}, 4: {1: 4, 2: 8}}

ネストされた辞書内包表記の利点

Python でネストされた辞書内包表記を使用すると、いくつかの利点があります。

  1. それらを使用して、複雑なネストされた辞書を簡単に作成できます。
  2. 大量のデータを効率的に処理するためにそれらを使用できます。
  3. 最後に、それらを使用して、既存の辞書に基づいて新しい辞書をすばやく作成できます。

したがって、ネストされた辞書内包表記がどのように機能するかを理解すれば、Python で複雑なデータをすばやく効率的に処理できます。

著者: Zeeshan Afridi
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

関連記事 - Python Dictionary