Search code examples
python-3.xdictionarypylintitems

Consider iterating with items()


I'm browsing a dictionary to delete some values in another dictionary. However, pylint doesn't like my code and suggest me to use .items() method. I discover this method and I don't understand how to get the same result with this.

My dictionaries look like that :

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"
  }
}

Actually I browse them like this :

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]

How could I do the same thing with items() ? Thank you for your help


Solution

  • pylint warns you that you can avoid redundant itemsToDelete[package] expressions by using the items method of dictionaries.

    So try this instead:

    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]