Python
 Computer >> コンピューター >  >> プログラミング >> Python

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'}]

  1. Python辞書の値を合計する方法は?

    Python辞書の値の合計を取得するのは非常に簡単です。最初に、dict.values()を使用してリスト内の値を取得できます。次に、sumメソッドを呼び出して、これらの値の合計を取得できます。 例 d = {    'foo': 10,    'bar': 20,    'baz': 30 } print(sum(d.values())) 出力 これにより、出力が得られます- 60

  2. 重複するキーを使用してPython辞書を作成するにはどうすればよいですか?

    Python辞書では、キーを繰り返すことはできません。ただし、 defaultdictを使用できます 回避策を見つけるため。このクラスはコレクションモジュールで定義されています。 defaultdictオブジェクトのデフォルトファクトリとしてリストを使用する >>> from collections import defaultdict >>> d=defaultdict(list) これは、それぞれ2つのアイテムを持つタプルのリストです。最初のアイテムが繰り返し使用されていることがわかりました。このリストはdefaultdictで変換されます >