5

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

Menryck
  • 149
  • 1
  • 9

1 Answers1

4

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]
Pierre.Sassoulas
  • 3,733
  • 3
  • 33
  • 48
qouify
  • 3,698
  • 2
  • 15
  • 26