ホームページ >バックエンド開発 >Python チュートリアル >Python 3でリストを辞書キーとして使用するにはどうすればよいですか?

Python 3でリストを辞書キーとして使用するにはどうすればよいですか?

WBOY
WBOY転載
2023-08-28 20:57:021745ブラウズ

如何在Python 3中将列表用作字典的键?

辞書は、Python プログラミング言語で最も強力なデータ構造の 1 つです。これは、キーと値のペアで構成されるデータ構造です。これにはいくつかの利点があります。たとえば、値へのアクセスの時間計算量は O(1) であり、メモリ効率が高く、更新、削除、反復が容易で、高速操作のための多くの組み込み関数が提供されます。

リストを直接使用する場合に発生する問題

リストをキーとして使用しようとすると問題が発生するため、このトピックに焦点を当てます。リストは Python の可変データ型です。したがって、リスト内の値を削除、更新、追加できます。したがって、リストとリスト項目からハッシュ関数を生成すると、リストの項目が変更されると、ハッシュ関数が変更されるため、ハッシュ関数を見つけることができなくなります。

別の潜在的な問題は、異なるリストが同じハッシュ値を持つ可能性があることです。 2 つのリストの値の合計が同じであれば、それらのハッシュ値も同じになります。この場合、リストの 1 つが辞書のキーとして使用され、同じハッシュを持つ別のリストが検索されると、辞書は間違った結果を返す可能性があります。

リストをタプルに変換する

辞書のキーのリストをタプルに変換し、それらをキーとして使用する 1 つの方法は、この間接法を使用することです。値は同じままですが、データ型がリストではなくなっていることに注意してください

###文法### リーリー

ここで、タプルはリストの名前である 1 つのパラメータを受け取ります。

###例###

次のコードでは、最初に my_dict という名前の空の辞書を作成しました。次に、my_list という名前のリストを作成しました。タプル メソッドを使用して、リストを Tuple オブジェクトに変換しました。今度は、Tuple オブジェクトをキーとして使用します。値として文字列「hello, world!」。

リーリー ###出力### リーリー

リストを文字列に変換します

別の方法は、リストを文字列データ型に変換することです。 String は不変のデータ型でもあるため、辞書のキーとして使用できます。

###文法### リーリー

ここでのステ​​ートメントはリストから個々の要素を取得し、それらを組み合わせて文字列を作成します。 Join 関数は文字列のシーケンスを結合します。

###例###

次のコードでは、まず my_list という名前のリストを作成しました。次に、join メソッドを使用してリスト要素の文字列を作成しました。文字列は辞書のキーとして使用できるため、これを辞書の te キーとして使用しました。辞書 my_list_str.

リーリー ###出力### リーリー

リストをJSONに変換する

JSON モジュールと組み込み関数を使用して、最初にダンプ メソッドを使用してリストを文字列に変換し、後でこれを辞書のキーとして使用することもできます。

###文法### リーリー

これは、Python オブジェクトを JSON 形式の文字列にシリアル化する JSON ライブラリのダンプ メソッドです。 dumps メソッドは文字列の名前をパラメータとして受け入れます

###例###

以下のコードでは、まず JSON ライブラリをインポートします。次に、my_list というリストを作成します。 dumps メソッドを使用して、リストからシリアル化されたオブジェクトを作成しました。これで、シリアル化されたオブジェクトが辞書キー my_dict として得られました。

リーリー ###出力### リーリー ###結論###

この記事では、Python 3 でリストを辞書のキーとして使用する方法を学びました。リストを Python 辞書のキーとして直接作成しようとすると直面する困難を理解しました。したがって、最初に次のことを行う必要があります。リストのデータ型を不変のデータ型であるタプルや文字列などに変換します。また、JSON モジュールを使用してリストを辞書キーとして使用する方法も学習しました。

以上がPython 3でリストを辞書キーとして使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。