在Python字典中查找所有具有相同值的键

19

假设我有一个字典:

dict1 = {"Jim": "y", "Bob": "y", "Ravioli": "n"}  # etc.

我想打印出所有值为“y”的键(例如:“Jim”,“Bob”)。我该如何以最简单的方式实现?


3
[i for i,j in dic.items() if j == 'y'] - Avinash Raj
2
看起来你的实际问题是你的字典是反向的,使用{'y': ['Jim', ...], ...}你可以在O(1)时间内得到答案。 - jonrsharpe
1
@RomanPerekhrest 那个答案只能找到一个具有特定值的键。 - Cobie Fisher
1
提供的链接中,排名第一的答案返回了所有值(而不仅仅是一个)。 - B. Decoster
1个回答

37

你可以使用这个:

[k for k, v in dict1.items() if v == 'y']

结果:

['Bob', 'Jim']

1
请不要使用dict作为变量名。哈哈,我知道,这只是为了澄清而提出的理论问题。 - Cobie Fisher
它如何用于多个输出?例如,如果我必须打印v == 'y',假设v == 'x'等等。 - Srijan Chaudhary
1
@SrijanChaudhary 然后你可以像这样更改if条件 if v in ('x','y','z') - Rahul K P
9
@RahulKP,但这种方法非常低效,并且有点像硬编码。如果我们不知道所有的值怎么办? - Srijan Chaudhary

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接