python - 如何在我的嵌套字典中打印具有特定值的键?
问题描述
我有这本字典,我想打印有节食食肉动物的钥匙的名称和 4 岁的钥匙。但是当我运行我的代码时,什么也没有发生。我怎样才能得到钥匙?
我的代码:
pets = { 'Dog': {'name': 'Rex', 'age': 4, 'diet': 'carnivore', 'gray':False },
'Cat': {'name': 'Betty', 'age': 10, 'diet': 'carnivore', 'gray':True },
'Rabbit': {'name': 'Simon', 'age': 4, 'diet': 'herbivore', 'gray': True},
'Fish': {'name': 'Fluffy', 'age': 1, 'diet': 'herbivore', 'gray': False}}
for key, value in pets.items():
if 'carnivore' in value:
print(key)
if 4 in value:
print(key)
预期输出:
狗
猫
和:
狗
兔子
解决方案
这是一个嵌套的dict
,所以循环体必须稍微复杂一点:
for key, dct in pets.items():
if 'carnivore' in dct.values():
print(key)
if 4 in dct.values():
print(key)
当然,dict
如果您知道希望绑定到该值的键,则对值进行包含检查并不理想:
for key, dct in pets.items():
if dct.get('diet') == 'carnivore':
print(key)
if dct.get('age') == 4:
print(key)
推荐阅读
- linux - BlueZ:移除与 BLE 设备的绑定不起作用
- cygwin - Cygwin 总是从缓存中安装包
- kubernetes - 当 Pod “忙”时指定给 Kubernetes
- wso2is - 如何使用电子邮件/手机和密码的自定义身份验证?
- flask - 增加 Flask 应用程序的超时设置
- angular - 将访问令牌刷新并保存到会话存储中
- spring-boot - 在 Spring Boot1.5 肥皂后端处理 null vs nil=true
- powerbi - DAX 上年度比较处理的部分数据
- android - 根据回收站视图中的选定项目更改编辑屏幕
- gerrit - 是否有适用于 Windows 的 Gerrit 客户端?