python - 在嵌套字典中查找键
问题描述
我试图在嵌套字典中找到一个键:
mydict = {
('Geography', 1): {},
('Languages', 2): {
('English', 3): {
('Grammar', 6): {
('new', 10):{},
('old', 11): {}
}
},
('Spanish', 4): {},
('French', 5): {
('Grammar', 7): {}
},
('Dutch', 8): {
('Grammar', 9): {
('new', 12):{}
}
}
}
}
所以我在字典中循环查找键('Grammar', 9)
,例如:
def _loop(topic, topics_dict):
if (topic[0], topic[1]) in topics_dict.keys():
return topics_dict[(topic[0], topic[1])]
else:
for k, v in topics_dict.items():
if v != {}:
return _loop(topic, v)
topic = ('Grammar', 9)
trim_mydict = _loop(topic, mydict)
print(trim_mydict)
但是,实际上,它返回None
而不是{('new', 12):{}}
我已经检查了这个线程(在字典中递归查找键),但我似乎在做同样的事情......
解决方案
当你在循环中没有条件返回时,它只返回第一个结果,即使它是无。我添加了这样的检查:
mydict = {
('Geography', 1): {},
('Languages', 2): {
('English', 3): {
('Grammar', 6): {
('new', 10):{},
('old', 11): {}
}
},
('Spanish', 4): {},
('French', 5): {
('Grammar', 7): {}
},
('Dutch', 8): {
('Grammar', 9): {
('new', 10):{}
}
}
}
}
def _loop(topic, topics_dict):
if (topic[0], topic[1]) in topics_dict.keys():
return topics_dict[(topic[0], topic[1])]
else:
for k, v in topics_dict.items():
if v != {}:
if (result := _loop(topic, v)) is not None:
return result
topic = ('Grammar', 9)
trim_mydict = _loop(topic, mydict)
print(trim_mydict)
>>> {('new', 10): {}}
推荐阅读
- sql - 不匹配的输入'('期待
(第 3 行,位置 28) - typescript - 无法理解 TypeScript 中 keyof 的语义
- javascript - 格式化 PHP 文本以在 Javascript 变量中使用
- c# - ASP.NET 3.1 Web API,实体框架一对多关系要么没有建立要么以循环结束
- c# - C# .NET 在英国时区创建一个 DateTime 对象(我在美国中部)
- c++ - 每次运行都在同一断点处的 Visual Studio“调试工作进程意外退出”
- snowflake-cloud-data-platform - 主键约束、表从本地数据库迁移到雪花、json 列的推荐数据类型?
- firebase - Google Apps Scripts - 如何从 Firestore 获取文档的键值?
- python - 在 TensorFlow 2.0 中加载 numpy 权重
- reactjs - 如何使用预渲染初始状态在服务器上渲染 React?