我正在整理字典并试图通过它并确定“food_type”中哪些字典键具有相应的“fruit”值。到目前为止,下面我最远的代码是:
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"]
答案 0 :(得分:5)
您希望迭代(key, value)
对,将匹配累积到列表中,然后返回该列表。
list comprehension很好地完成了工作:
def fruit(food_type):
return [k for k, v in food_type.items() if v == 'fruit']
答案 1 :(得分: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']
答案 2 :(得分:0)
以下代码会返回新词典,其中只包含值等于'水果'
的条目>>> d = {'apple': 'fruit', 'lettuce': 'veggie', 'banana':'fruit'}
>>> {k: v for k, v in d.items() if v == 'fruit'}
{'apple': 'fruit', 'banana': 'fruit'}
如果你只想要按键,只需在它上面调用keys()方法即可。
答案 3 :(得分: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"]