字典 - 缩小值并打印属于它的键 - Python

时间:2016-04-03 20:44:18

标签: python dictionary

我正在整理字典并试图通过它并确定“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"]

4 个答案:

答案 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"]