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指定されたキーの型と値の型を含むディクショナリを作成する
insertディクショナリへのエントリの追加
lookupFind value in dictionary by key
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
    {[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 で導入

すべて展開する