2017-12-12 4 views
-2

だから私がやろうとしているが、私はそれらの値としてリストを持っている辞書を持っている場合、私はユニークキーまたは一意の値を検索し、印刷する必要がある: 例:ディクショナリのPythonの値リストにないキーを探しますか? (初心者)

my_dict = {dog:[cat,rat,bird],cat:[dog,bird,rat],mouse:[fish,fly,horse]} 

と私が知りたいことの値は、キー(のように存在しないキー(S)の値として存在し、それらを印刷しない(これはマウスにつながる)、および

    1. ですこれは魚、飛んで、hor SE、ラット、鳥)

    して、ストアが新しいリスト

    におけるそれぞれの結果は私がしようとしていた何のようなものだったと述べた。これらの線に沿って

    new_list = [] 
    for i in my_dict.keys(): 
        if i not in my_dict.values(): 
         new_list = my_dict.values(i) 
    

    か何かを

  • +0

    'Iveはいくつかのことを試しました。 –

    +3

    ああ、スタックオーバーフローへようこそ! –

    +2

    ポイント2に記載されている期待通りの結果が得られましたか?例を短縮してもはや適用されませんでしたか?私は対応するキーのない値として 'ラット、鳥、魚、飛ぶ馬 'を見ます。また、キーと値は文字列であるはずですか?その場合は、それらを引用する必要があります。 –

    答えて

    0

    まず、あなたはitertools.chain.from_iterableで自分の価値観の全てをフラット化することができます

    >>> import itertools 
    >>> my_dict = {'dog':['cat','rat','bird'],'cat':['dog','bird','rat'],'mouse':['fish','fly','horse']} 
    >>> values = list(itertools.chain.from_iterable(my_dict.values())) 
    >>> print(values) 
    ['cat', 'rat', 'bird', 'dog', 'bird', 'rat', 'fish', 'fly', 'horse'] 
    

    または他の方法で:

    >>> values = [lst for item in my_dict.values() for lst in item] 
    >>> print(values) 
    ['cat', 'rat', 'bird', 'dog', 'bird', 'rat', 'fish', 'fly', 'horse'] 
    >>> values = sum(my_dict.values(), []) 
    >>> print(values) 
    ['cat', 'rat', 'bird', 'dog', 'bird', 'rat', 'fish', 'fly', 'horse'] 
    

    その後、あなたはその値、および値として存在しないキーを抽出することができます

    >>> only_keys = [key for key in my_dict if key not in values] 
    >>> print(only_keys) 
    ['mouse'] 
    >>> only_values = [value for value in values if value not in my_dict] 
    >>> print(list(set(only_values))) 
    >>> ['rat', 'bird', 'fish', 'fly', 'horse'] 
    

    注:あなたはを適用する必要があり、キーとして存在してはいけません値は辞書に複製することができ、キーはできないので、をonly_valuesに設定します。

    0

    セットで簡単かつ効率的に行うことができます:

    >>> my_dict = {'dog': ['cat', 'rat', 'bird'], 'cat': ['dog', 'bird', 'rat'], 'mouse': ['fish', 'fly', 'horse']} 
    >>> values = {value for l in my_dict.values() for value in l} 
    >>> keys = set(my_dict) 
    >>> values - keys 
    set(['fly', 'horse', 'fish', 'rat', 'bird']) 
    >>> keys - values 
    set(['mouse']) 
    
    0

    入力データ:

    animals_values = set() 
    for values in my_dict.values(): 
        animals_values.update(values) 
    

    の動物のチェック:値のすべての動物のセットを作成

    animals_keys = set(my_dict.keys()) 
    

    my_dict = {"dog": ["cat","rat","bird"], 
          "cat": ["dog","bird","rat"], 
          "mouse": ["fish","fly","horse"]} 
    

    キーですべての動物のセットを作成しますキーに値は含まれていません:

    animal_keys - animal_values 
    

    [ 'マウス']

    周りに他の方法、値のではなく、キーの動物:

    animal_values - animal_keys 
    

    [ '、 'ラット' フライ' 「魚」、「鳥」、「馬」]


    これはPython 3です。

    関連する問題