首页 > 解决方案 > 考虑使用 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() 做同样的事情?感谢您的帮助

标签: python-3.xdictionarypylintitems

解决方案


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]

推荐阅读