Pythonの辞書で重複する値を持つキーを検索する
辞書を扱っているときに、明らかにキーが一意のままであるにもかかわらず、辞書に重複する値がある場合に遭遇する可能性があります。この記事では、これを実現する方法を説明します。
キーと値の交換
キーを辞書の値と交換してから、特定のキーに関連付けられた値を追加し続けます。このようにして、重複する値がクラブ化され、結果の新しい辞書で確認できます。
例
dictA = {'Sun': 5, 'Mon': 3, 'Tue': 5, 'Wed': 3} print("Given Dictionary :", dictA) k_v_exchanged = {} for key, value in dictA.items(): if value not in k_v_exchanged: k_v_exchanged[value] = [key] else: k_v_exchanged[value].append(key) # Result print("New Dictionary:", k_v_exchanged)
出力
上記のコードを実行すると、次の結果が得られます-
Given Dictionary : {'Sun': 5, 'Mon': 3, 'Tue': 5, 'Wed': 3} New Dictionary: {5: ['Sun', 'Tue'], 3: ['Mon', 'Wed']}
セット付き
ここでも同様のアプローチに従います。ここでも、集合関数を使用して既存の辞書から新しい辞書を作成し、重複する値を持つキーを追加します。最後に、長さが1より大きい値を除外し、重複としてマークします。
例
dictA = {'Sun': 5, 'Mon': 3, 'Tue': 5, 'Wed': 4} print("Given Dictionary :", dictA) dictB = {} for key, value in dictA.items(): dictB.setdefault(value, set()).add(key) res = filter(lambda x: len(x) >1, dictB.values()) # Result print("New Dictionary:",list(res))
出力
上記のコードを実行すると、次の結果が得られます-
Given Dictionary : {'Sun': 5, 'Mon': 3, 'Tue': 5, 'Wed': 4} New Dictionary: [{'Tue', 'Sun'}]
-
Python辞書の値を合計する方法は?
Python辞書の値の合計を取得するのは非常に簡単です。最初に、dict.values()を使用してリスト内の値を取得できます。次に、sumメソッドを呼び出して、これらの値の合計を取得できます。 例 d = { 'foo': 10, 'bar': 20, 'baz': 30 } print(sum(d.values())) 出力 これにより、出力が得られます- 60
-
重複するキーを使用してPython辞書を作成するにはどうすればよいですか?
Python辞書では、キーを繰り返すことはできません。ただし、 defaultdictを使用できます 回避策を見つけるため。このクラスはコレクションモジュールで定義されています。 defaultdictオブジェクトのデフォルトファクトリとしてリストを使用する >>> from collections import defaultdict >>> d=defaultdict(list) これは、それぞれ2つのアイテムを持つタプルのリストです。最初のアイテムが繰り返し使用されていることがわかりました。このリストはdefaultdictで変換されます >