に個別の値の最小のキーを保管してください:私はこのような、明確な、整数キーと潜在的に重複する値を持つ辞書を持っているPythonの辞書
my_data = {5:1,2:2,3:2,4:2,1:1}
私はset()
を使用して個別の値を取得する方法を知っているが、私は「何やりたいDこのように、それらの鍵ペア、重複値のうち小さい生じるキーと異なる値を選択することである:第二辞書で同じ値を有する
{1:1, 2:2}
に個別の値の最小のキーを保管してください:私はこのような、明確な、整数キーと潜在的に重複する値を持つ辞書を持っているPythonの辞書
my_data = {5:1,2:2,3:2,4:2,1:1}
私はset()
を使用して個別の値を取得する方法を知っているが、私は「何やりたいDこのように、それらの鍵ペア、重複値のうち小さい生じるキーと異なる値を選択することである:第二辞書で同じ値を有する
{1:1, 2:2}
まず、グループキー。次に、辞書内包表記を使用して、重複キーを持つすべての値の最小キーを取得します。 (if len(key) > 1
わからない。それはあなたが「重複値の中」、そしてちょうどその部分を削除。で何を意味するのかはない場合)
>>> import collections
>>> my_data = {5:1,2:2,3:2,4:2,1:1}
>>> d = collections.defaultdict(list)
>>> for k, v in my_data.items():
... d[v].append(k)
>>> {min(keys): value for value, keys in d.items() if len(keys) > 1}
{1: 1, 2: 2}
ソート dictのキーと値のペアを値によってキー(下位キーが最初に来る)、グループを値で入力し、各グループの最初のキーを取得します。あなたは中間の辞書なし辞書理解でそれを行うことができます
:
from itertools import groupby
dct = {5:1, 2:2, 3:2, 4:2, 1:1}
new_dict = dict(next(g) for _, g in groupby(sorted(dct.items(),
key=lambda x: x[::-1]), lambda x: x[1]))
# {1: 1, 2: 2}
または 'dict(次の(g)for _、g in ...)' –
@tobias_kありがとう。それは良く読む。 –
Pythonは、辞書内の項目の順序を保証するものではありません。変数my_listを呼び出しても、辞書を参照しています – smac89
@ smac89それは秩序を保証していないので大丈夫です。私が必要であればポストホックをソートできます。あなたが好きなら変数名を変更することができます;) –