メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

dictionary

R2025b

一意のキーを値にマップするオブジェクト

containers.Map よりも推奨されます。

説明

"ディクショナリ" を使用して、キーに関連付けられた値を効率的に検索できます。ディクショナリは、データを "値" として格納するマップで、この値には対応する一意の "キー" を使用してアクセスできます。キーと値の各ペアは "エントリ" です。

作成

説明

d = dictionary(keys,values) は、指定されたキーと値を含むディクショナリを作成します。結果のディクショナリ d は、1 行 1 列のスカラー オブジェクトになります。複数の値が同じキーに割り当てられている場合は、これらのうち最後の値のみが割り当てられます。既存のキーに新しく割り当てると、そのエントリの値が上書きされます。

keys と values はいずれの型にもできますが、values がスカラーでない場合は同じサイズでなければなりません。スカラーの場合は、keys の各要素が values のキーになります。キーと値が配列の場合、エントリの数はキーと値のペアの数と同じです。

ディクショナリでは、キーと値の型が強制的に揃えられます。ディクショナリ内のすべてのキーとすべての値がそれぞれのデータ型を共有するか、設定されたデータ型に変換できる必要があります。新しいエントリの一部が設定されたデータ型を共有していない場合、MATLAB® は変換を試みます。キーと値を同じデータ型にする必要はありません。文字行ベクトルは、キーまたは値として代入されると、string スカラーに変換されます。

混在したキーまたは値の型を格納するには cell 配列を使用します。cell を値として使用するディクショナリで検索を実行すると、cell 配列が返されます。小かっこではなく中かっこ ({}) を使用することで、cell 配列の内容に直接アクセスできます。 (R2023a 以降)

例

d = dictionary(k1,v1,...,kN,vN) は、指定されたキーと値のペアを含むディクショナリを作成します。同じキーのインスタンスが複数指定されている場合は、最後のキーと値のペアのみが割り当てられます。

d = dictionary は、キーと値がない未設定のディクショナリを作成します。

入力を指定せずに作成したディクショナリは "未設定" で、型はありません。未設定のディクショナリにエントリを追加すると、キーのデータ型と値のデータ型が指定されます。

例

入力引数

すべて展開する

キー。スカラーまたは配列として指定します。keys の個々の要素は、同じデータ型または互換性のあるデータ型のスカラーでなければなりません。

keys が配列の場合、各要素によって新しいキーが作成されます。keys に重複する要素が含まれている場合、重複する最後の要素の対応する値が割り当てられます。

値。スカラー、配列、または cell 配列として指定します。values の個々の要素は、同じデータ型のスカラーでなければなりません。値を異種混合または非スカラーにする必要がある場合は、cell 配列を使用します。

values が配列の場合、各要素によって新しい値が作成されます。keys が配列で values がスカラーの場合、その値は keys の各キーにマッピングされます。

キーと値のペア。キーと値のスカラーおよび配列の個別の引数として指定します。すべてのキー引数は、同じデータ型または互換性のあるデータ型でなければなりません。すべての値引数は、同じデータ型または互換性のあるデータ型でなければなりません。

出力引数

すべて展開する

ディクショナリ。ディクショナリ オブジェクトとして返されます。エントリは追加された順序で格納されます。

使用法

説明

dictionary を使用して、ディクショナリ d を作成します。その後、次の構文のいずれかを使用して、特定のクエリ点で d を評価または変更できます。

valueOut = d(keys) は、keys に対応する値を検索します。

d(keys) = newValues は、newValues の要素を、keys の対応する値で指定されたエントリに代入します。指定したキーがディクショナリに存在しない場合は、新しいエントリが追加されます。複数の値が同じキーに割り当てられている場合は、これらのうち最後の値のみが割り当てられます。既存のキーに新しく割り当てると、そのエントリの値が上書きされます。

d(keys) = [] は、keys に関連付けられているエントリをディクショナリから削除します。

valueOut = d{keys} は、keys に関連付けられている値を検索し、cell の内容を返します。keys が配列の場合は、対応する値のコンマ区切りリストが返されます。ディクショナリの値が cell 以外のデータ型に構成されている場合、エラーがスローされます。

d{keys} = newValues は、newValues の要素が含まれている cell を、keys の対応する値で指定されたエントリに代入します。ディクショナリの値が cell 以外のデータ型に構成されている場合、エラーがスローされます。

オブジェクト関数

configureDictionary指定されたキーの型と値の型を含むディクショナリを作成する
insertディクショナリへのエントリの追加
lookupキーによるディクショナリ内の値の検索
removeディクショナリのエントリの削除
entriesディクショナリのキーと値のペア
keysディクショナリのキー
valuesディクショナリの値
typesディクショナリのキーと値の型
numEntriesディクショナリ内のキーと値のペアの数
isConfiguredDetermine if dictionary has types assigned to keys and values
isKeyディクショナリがキーを含むかどうかを判別

例

すべて折りたたむ

さまざまな車両の車輪数を格納するディクショナリを作成します。

名前の配列と対応する車輪数の配列を作成します。

wheels = [1 2 3];
names = ["Monocycle" "Bicycle" "Tricycle"];

名前をキーとして、車輪数を値として使用してディクショナリを作成します。

d = dictionary(names,wheels)
d =

  dictionary (string ⟼ double) with 3 entries:

    "Monocycle" ⟼ 1
    "Bicycle"   ⟼ 2
    "Tricycle"  ⟼ 3

キーをインデックスとして使用して、ディクショナリの値にアクセスします。

d("Tricycle")
ans = 
3

新しい値を既存のキーに割り当ててエントリを変更できます。

d("Bicycle") = 2.5
d =

  dictionary (string ⟼ double) with 3 entries:

    "Monocycle" ⟼ 1
    "Bicycle"   ⟼ 2.5000
    "Tricycle"  ⟼ 3

値をキーに割り当てて新しいエントリをディクショナリに追加します。

d("Car") = 4
d =

  dictionary (string ⟼ double) with 4 entries:

    "Monocycle" ⟼ 1
    "Bicycle"   ⟼ 2.5000
    "Tricycle"  ⟼ 3
    "Car"       ⟼ 4

キーと値の配列を使用して複数のエントリを追加します。

names2 = ["Truck" "Motorcycle" "Sixteen-Wheeler"];
wheels2 = [4 2 16];
d(names2) = wheels2
d =

  dictionary (string ⟼ double) with 7 entries:

    "Monocycle"       ⟼ 1
    "Bicycle"         ⟼ 2.5000
    "Tricycle"        ⟼ 3
    "Car"             ⟼ 4
    "Truck"           ⟼ 4
    "Motorcycle"      ⟼ 2
    "Sixteen-Wheeler" ⟼ 16

空の配列を既存のキーに割り当ててエントリを削除します。

d("Truck") = []
d =

  dictionary (string ⟼ double) with 6 entries:

    "Monocycle"       ⟼ 1
    "Bicycle"         ⟼ 2.5000
    "Tricycle"        ⟼ 3
    "Car"             ⟼ 4
    "Motorcycle"      ⟼ 2
    "Sixteen-Wheeler" ⟼ 16

新しいエントリは、ディクショナリの設定されたデータ型と一致するように自動変換されます。変換できない場合、MATLAB はエラーをスローします。

d('Spider-Car') = "8"
d =

  dictionary (string ⟼ double) with 7 entries:

    "Monocycle"       ⟼ 1
    "Bicycle"         ⟼ 2.5000
    "Tricycle"        ⟼ 3
    "Car"             ⟼ 4
    "Motorcycle"      ⟼ 2
    "Sixteen-Wheeler" ⟼ 16
    "Spider-Car"      ⟼ 8

ディクショナリの値は同じ型でなければなりません。ただし、型が異なるデータは cell としてディクショナリに格納できます。

さまざまなデータ型を含む cell 配列とキーの string 配列を作成します。

myValues = {datetime,@myfun,struct,[1 2 3 4]}
myValues=1×4 cell array
    {[09-Aug-2025 11:48:36]}    {@myfun}    {1×1 struct}    {[1 2 3 4]}

myKeys = ["my birthday" "my favorite function" "a structure" "numeric array"]
myKeys = 1×4 string
    "my birthday"    "my favorite function"    "a structure"    "numeric array"

指定したキーと値を使用してディクショナリを作成します。

d = dictionary(myKeys,myValues)
d =

  dictionary (string ⟼ cell) with 4 entries:

    "my birthday"          ⟼ {[09-Aug-2025 11:48:36]}
    "my favorite function" ⟼ {@myfun}
    "a structure"          ⟼ {1×1 struct}
    "numeric array"        ⟼ {[1 2 3 4]}

関数 values を使用して、値を cell 配列として抽出します。

values(d)
ans=4×1 cell array
    {[09-Aug-2025 11:48:36]}
    {                @myfun}
    {1×1 struct            }
    {[             1 2 3 4]}

"R2023a" では、中かっこ ({}) を使用して直接、値として保存されたセルの内容をルックアップします。

d{"numeric array"}
ans = 1×4

     1     2     3     4

同様に、中かっこ ({}) を使用してセル値をもつ既存のディクショナリに任意のデータ型の新しいエントリを挿入できます。

d{"a new entry"} = table
d =

  dictionary (string ⟼ cell) with 5 entries:

    "my birthday"          ⟼ {[09-Aug-2025 11:48:36]}
    "my favorite function" ⟼ {@myfun}
    "a structure"          ⟼ {1×1 struct}
    "numeric array"        ⟼ {[1 2 3 4]}
    "a new entry"          ⟼ {0×0 table}

入力なしで dictionary を呼び出すと、未設定のディクショナリが作成されます。

configureDictionary を使用して、空の設定済みディクショナリを作成します。

R2023b より前: 目的の型をもつ空の入力を代入します。たとえば、d = dictionary(string([]),[]). のようになります。

d = configureDictionary("string","double")
d =

  dictionary (string ⟼ double) with no entries.

このディクショナリは設定済みで、データ型が一致するか設定済みディクショナリのデータ型に変換可能な限り、新しいエントリを追加できます。

d("Unicycle") = 1;
d("Bicycle") = 2;
d("Tricycle") = 3
d =

  dictionary (string ⟼ double) with 3 entries:

    "Unicycle" ⟼ 1
    "Bicycle"  ⟼ 2
    "Tricycle" ⟼ 3

入力なしで dictionary を呼び出して、未設定のディクショナリを作成します。

d = dictionary
d =

  dictionary with unset key and value types.

未設定のディクショナリにエントリを追加すると、MATLAB によってディクショナリが設定済みに変更されます。

names = ["Unicycle" "Bicycle" "Tricycle"];
wheels = [1 2 3];
d(wheels) = names
d =

  dictionary (double ⟼ string) with 3 entries:

    1 ⟼ "Unicycle"
    2 ⟼ "Bicycle"
    3 ⟼ "Tricycle"

ヒント

  • カスタム クラスはキーと値のどちらとしても使用できます。インデックス付けやサイズのクエリがオーバーロードしているクラス、および標準的な配列の動作と異なるクラスは、想定どおりに動作しないことがあります。詳細については、ディクショナリとカスタム クラスを参照してください。

拡張機能

すべて展開する

バージョン履歴

R2022b で導入

すべて展開する