Python 辞書のキーはタプルにできますか?

silencement
リリース: 2019-06-19 09:09:39
オリジナル
28310 人が閲覧しました

Python 辞書のキーはタプルにできますか?

Python 辞書のキー

辞書内の値には制限がなく、標準オブジェクトからユーザーまでの任意の Python オブジェクトを使用できます-define 任意のオブジェクトを使用できますが、ディクショナリ内のキーはタイプ制限されています。

1 つのキーを複数の値に対応させることはできません

1 つの原則を明確にする必要があります。各キーは 1 つの項目にのみ対応できます。言い換えると、1 つのキーに対応する複数の値は許可されません (リスト、タプル、その他の辞書などのコンテナー オブジェクトは許可されます)。キーの競合がある場合 (つまり、辞書キーに繰り返し値が割り当てられている場合)、最後 (最新) の割り当てが採用されます。 Python では、ディクショナリ内のキーの競合によるエラーは生成されません。キーの競合が発生した場合、キーと値のペアが割り当てられるたびにチェックされることになり、一定の時間がかかるため、キーの競合はチェックされません。メモリの量。

>>> dict1 = {'foo':789, 'foo': 'xyz'} 
>>> dict1 
{'foo': 'xyz'} 
>>> dict1['foo'] = 123
>>> dict1 
{'foo': 123}
ログイン後にコピー

キーはハッシュ可能である必要があります

ほとんどの Python オブジェクトはキーとして機能しますが、ハッシュ可能なオブジェクトである必要があります。リストや辞書などの可変型はハッシュ可能ではないため、キーとして使用できません。すべての不変型はハッシュ可能であるため、辞書キーとして使用できます。等しい値を持つ数値は同じキーを表すことに注意してください。つまり、整数値 1 と浮動小数点数 1.0 のハッシュ値は同じであり、それらは同じキーです。

同時に、(まれに) ハッシュ可能で、辞書キーとして使用できる可変オブジェクトもいくつかありますが、それはまれです。たとえば、 __hash__() 特殊メソッドを実装するクラスを考えてみましょう。 __hash__() メソッドは整数を返すため、不変の値が引き続き (辞書キーとして) 使用されます。なぜ鍵はハッシュ可能でなければならないのでしょうか?インタプリタはハッシュ関数を呼び出し、ディクショナリ内のキーの値に基づいてデータの保存場所を計算します。キーが可変オブジェクトの場合、その値は変更される可能性があります。キーが変更されると、ハッシュ関数はデータを保存するために別のアドレスにマップされます。これが発生すると、ハッシュ関数は関連データを確実に保存または取得できなくなります。ハッシュ可能なキーを選択する理由は、その値を変更できないためです。

For example

d = {('a','b'):(3,7)}
ログイン後にコピー

上の例では、タプルを辞書のキーとして使用しています。エラーが報告されていないことがわかり、タプルは辞書のキーとしても使用できることがわかります。辞書。

数値と文字列は辞書キーとして使用できます。タプルは不変ですが、不変ではない場合もあります。したがって、タプルを有効なキーとして使用することは制限する必要があります: タプルの場合、数値や文字列などの不変パラメータのみが使用可能です。辞書に有効なキーとして含まれています。

以上がPython 辞書のキーはタプルにできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート