2016-04-03 8 views
1

私は辞書をソートし、それを調べて "fruit_type"の辞書キーのどれに対応する "fruit" 。今のところ、これを通じて、以下の最も遠い私のコードを行くことは私をされとりますディクショナリ - 値の絞り込みとそれに属するキーの印刷 - Python

def fruit (food_type): 


     for f in food_type.values(): 
       if f=="fruit" : 
        return(f) 

fruit ({'apple': 'fruit', 'lettuce': 'veggie', 'banana':'fruit'}) 

この一度だけ「フルーツ」を返すので、それは私の最終目標は、にあるので、私はこのケースで欲しいものだ場合、私は100%ではありませんよその値を辞書に反映させ、その値として「果物」を有するキーを返す。 D [K]またはd.get(K)など

私はこのために以下のような出力を探しています:

["apple","banana"] 

答えて

5

私は順序であなただけ行うことができます値を取得することを知っています(key, value)のペアを反復処理し、リストに一致するものを累積してからそのリストを返すことをお勧めします。

list comprehensionはうまく仕事を取得します。

def fruit(food_type): 
    return [k for k, v in food_type.items() if v == 'fruit'] 
0

後にこれは、あなたがしているものかもしれません:以下のコードはあなたに値を持つエントリだけを使用して新しい辞書を返します

def fruit (food_type): 
    return [k for k in food_type if food_type[k] == "fruit"] 

print fruit ({'apple': 'fruit', 'lettuce': 'veggie', 'banana':'fruit'}) 

# ['apple', 'banana'] 
0

'fruit'に等しい:

>>> d = {'apple': 'fruit', 'lettuce': 'veggie', 'banana':'fruit'} 
>>> {k: v for k, v in d.items() if v == 'fruit'} 
{'apple': 'fruit', 'banana': 'fruit'} 

キーだけが必要な場合は、それにkeys()メソッドを呼び出します。

0

また、であなたの辞書を逆することができます

inverse_d = {} 
for k, v in d.iter_items(): 
    if v not in inverse_d: 
     inverse_d[v] = [k] 
    else : 
     inverse_d[v].append(k) 

、その後

print inverse_d["fruit"] 
+0

'dict.setdefault'または' collections.defaultdict'は、if/elseブロックの必要性を削除します。 –

+1

私は知っています。私はこれが初心者の方にとって理解しやすいと判断しました。 – Julius

+0

簡単に言えばありがとう。私はPythonにはかなり新しいです。 – Nick

関連する問題