python-3.x - 考虑使用 items() 进行迭代
问题描述
我正在浏览字典以删除另一个字典中的一些值。但是,pylint 不喜欢我的代码并建议我使用 .items() 方法。我发现了这种方法,但我不明白如何用它获得相同的结果。
我的字典看起来像这样:
itemsToDelete = {
1: {
"page1": "item1",
"page1": "item2",
"page1": "item3"
},
2: {
"page3": "item1",
"page3": "item2",
"page3": "item3"
},
3: {
"page5": "item1",
"page5": "item2",
"page5": "item3"
}
}
contents = {
1: {
"page1": "item1",
"page1": "item2",
"page1": "item3",
"page1": "item4",
"page1": "item5"
},
2: {
"page3": "item1",
"page3": "item2",
"page3": "item3"
},
3: {
"page5": "item1",
"page5": "item2",
"page5": "item3"
}
}
实际上我是这样浏览它们的:
for package in itemsToDelete:
for page in itemsToDelete[package]:
for item in itemsToDelete[package][page]:
if item in contents[package][page]:
del contents[package][page][item]
我怎么能对 items() 做同样的事情?感谢您的帮助
解决方案
pylint 警告您,您可以通过使用字典itemsToDelete[package]
的方法来避免冗余表达式。items
所以试试这个:
for package, package_items in itemsToDelete.items():
for page, package_item in package_items.items():
for item in package_item:
if item in contents[package][page]:
del contents[package][page][item]
推荐阅读
- android - 是否可以停止空闲以完成 AsyncTask?
- c# - 如何在 C# 中有效地获取、处理和保存巨大的记录集?
- android - 如何在 android 上使用 grahpview 在折线图中绘制范围线?
- apache-kafka - Spring Cloud kafka Stream - 如何为同一频道使用两个不同的 kafka 集群?
- c - 您可以将不带方括号或下标的数组添加到整数吗?结果是什么?
- javascript - 根据复选框的状态工作 javascript
- networking - 是否在 OSI 模型的每一层添加/删除了标头?
- perl - 如何将转义的 t 转换为制表符
- javascript - 切换开关问题(将信息发送到 SQL 并在刷新页面后保持检查状态)
- excel - VBA如何在多列中搜索特定值并返回一个偏移单元格进行修改