如何通过提供值作为条件来获取字典键

mrT*_*mrT 0 python python-3.x

我已经在网上搜索过,但没有找到针对我的查询的答案。

在Python 3字典中,如何通过提供值(使用条件)来获取键。例如,如果我有一本包含宠物名字及其数量的字典:

my_dict = {'cats' : '5', 'dogs' : '4', 'fish' : '7', 'rabbits': '4'}
Run Code Online (Sandbox Code Playgroud)

您将如何使用条件来通过提供所有键“dogs”和“rabbits”的值(数量)(例如本例中的 4)来获取它们?

我读取一个输入文件并将一行存储在列表中(通过拆分字符串),然后使用 my_list[2] 访问该数量并从那里获取该数字 4。然后我需要检查是否有任何宠物与另一本字典中的这个数量相对应。

为了获得这个数量的宠物,我使用了以下方法:

for key, value in my_dict():
            if value == my_list[2]:
                print (key)
Run Code Online (Sandbox Code Playgroud)

但它只给了我一个键,而不是与值 4 关联的所有键。

编辑:事实证明这部分代码按预期工作,但实际问题是,在调试过程中,在输入文件中我更改了此变量的值(并忘记将其改回来),该值仅与一个匹配值在我的字典中,因此只返回一个键。非常感谢所有回复和建议的人。

Pru*_*une 5

您需要检查所有键并查看哪些键具有关联的所需值。

my_dict = {'cats' : '5', 'dogs' : '4', 'fish' : '7', 'rabbits': '4'}
four = [k for k in my_dict if my_dict[k] == '4']
Run Code Online (Sandbox Code Playgroud)

结果值four

['dogs', 'rabbits']
Run Code Online (Sandbox Code Playgroud)

这在这里也得到了很好的回答:https ://stackoverflow.com/a/44664263/11264793