ホームページ > バックエンド開発 > Python チュートリアル > Python 辞書を作成するときに重複キーを処理するにはどうすればよいですか?

Python 辞書を作成するときに重複キーを処理するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-13 17:16:09
オリジナル
227 人が閲覧しました

How Can I Handle Duplicate Keys When Creating a Python Dictionary?

Python 辞書の重複キー

プログラミングの分野では、辞書は一意のキーを対応する値にマッピングすることでデータを整理するのに非常に貴重であることがわかります。ただし、標準の Python 辞書実装は、各キーが辞書内で一意である必要があるという厳密な原則に従っています。この制約は、データセット内の重複キーを含むシナリオを扱うときに問題を引き起こします。

重複キーを含む辞書の作成

重複した自動車登録を含むテキスト ファイルが見つかったとします。番号には、ドライバーの名前、内線番号、駐車場所などの異なる情報が関連付けられています。タスクは、登録番号をキーとして、対応するデータを値として持つ辞書を構築することです。次のスニペットは一般的なアプローチを示しています:

data_dict = {}
data_list = []

def createDictionaryModified(filename):
    path = "C:\Users\user\Desktop"
    basename = "ParkingData_Part3.txt"
    filename = path + "//" + basename
    file = open(filename)
    contents = file.read()
    print(contents, "\n")
    data_list = [lines.split(",") for lines in contents.split("\n")]
    for line in data_list:
        regNumber = line[0]
        name = line[1]
        phoneExtn = line[2]
        carpark = line[3].strip()
        details = (name, phoneExtn, carpark)
        data_dict[regNumber] = details
    print(data_dict, "\n")
    print(data_dict.items(), "\n")
    print(data_dict.values())
ログイン後にコピー

ただし、このコードは、Python のデフォルトの辞書動作による制限に直面しています。重複キーにより以前の値が上書きされます。これを回避する解決策は、リストまたはセットを辞書内に保存することです。

Collections.defaultdict の使用

Python 標準ライブラリは、この目的に役立つツールを提供します。 collections.defaultdict。このクラスは、デフォルトのファクトリを使用してディクショナリを初期化し、存在しないキーによって新しいリストまたはセットが作成されるようにします (ファクトリの引数に応じて)。

from collections import defaultdict

data_dict = defaultdict(list)
ログイン後にコピー

ディクショナリに重複キーを設定するには、次のようにします。元の代入ステートメントを次のように置き換えます:

data_dict[regNumber] = details
ログイン後にコピー

:

data_dict[regNumber].append(details)
ログイン後にコピー

この戦略は、効果的に次の辞書を作成します。リスト。各キーは関連する値のリストに対応します。 collections.defaultdict を活用すると、Python 辞書内の重複キーを正常に処理できます。

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

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