Main Content

dictionary

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

R2022b 以降. 次よりも推奨: containers.Map.

説明

"ディクショナリ" は、大きなセット内の値を高速で検索するのに役立ちます。ディクショナリは、データを "値" として格納するマップで、この値には対応する一意の "キー" を使用してアクセスできます。キーと値の各ペアは "エントリ" です。

作成

説明

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

values がスカラーでない限り、keysvalues は同じサイズでなければなりません。スカラーの場合は、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指定されたキーの型と値の型を含むディクショナリを作成する
insertAdd entries to a dictionary
lookupFind value in dictionary by key
removeRemove dictionary entries
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
    {[25-Jan-2024 20:36:57]}    {@myfun}    {1x1 struct}    {[1 2 3 4]}

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

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

d = dictionary(myKeys,myValues)
d =

  dictionary (string --> cell) with 4 entries:

    "my birthday"          --> {[25-Jan-2024 20:36:57]}
    "my favorite function" --> {@myfun}
    "a structure"          --> {1x1 struct}
    "numeric array"        --> {[1 2 3 4]}

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

values(d)
ans=4×1 cell array
    {[25-Jan-2024 20:36:57]}
    {                @myfun}
    {1x1 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"          --> {[25-Jan-2024 20:36:57]}
    "my favorite function" --> {@myfun}
    "a structure"          --> {1x1 struct}
    "numeric array"        --> {[1 2 3 4]}
    "a new entry"          --> {0x0 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 で導入

すべて展開する