2017-07-12 15 views
2
dictx = {'C2': ['2', '5', '7'], 'A1': ['1','4', '5'], 'C1': ['2', '5'], 'A2': ['4', '5', '7', '8'], 'B3': ['4', '7'], 'B2': ['2', '4', '6', '7', '8']} 

これは私の辞書です。返信しようとしています: 「B2」と「A1」は、これらの2つのキーが一意の値を持つため、リストに表示することをお勧めします。順序は関係ありません。 forループの大きなセットを作成しようとしましたが、運がない(フリップなど)ように、いくつかの助けが大好きです。リストのPython辞書 - ユニークな値を持つキーを返す

サイドノート:辞書の​​値は、文字列形式で0-9の範囲であれば役立ちます。

編集:1と6は紛らわしい人です。具体的には、それらの値ではなく、固有の値を持つためB2とA1を返す必要があります。

from collections import Counter 
key_counter = Counter([entry for val in dictx.values() for entry in val]) 
print ([key for key in dictx if any(key_counter[val] == 1 for val in dictx[key])]) 

出力:1と6は、一意の値であることに依存しない一般的なアプローチのために

+0

フリッピングは、これを行う方法です。 –

+0

B2とA1には一意の値があるとどう結論していますか? – Gahan

+0

文言は非常に混乱しており、編集できません。明確にするには:一意の値は、他のサブリストのメンバーではないように、サブリスト内のメンバーです。たとえば、「A1」と「6」でのみ「1」が発生し、「B2」でのみ発生します。したがって、これらは「ユニーク」です。 – darksky

答えて

6

['A1', 'B2'] 
+0

ありがとう!私はループのためにそれをやろうとしていましたが、私はCounterを少し使ってみてください。=) – Passy

関連する問題