'How to ignore a single/multiple keys of all the dictionaries while looping over a list of dictionaries?

I am looping over a list of dictionaries and I have to drop/ignore either one or more keys of the each dictionary in the list and write it to a MongoDB. What is the efficient pythonic way of doing this ?

Example:

employees = [
{'name': "Tom", 'age': 10, 'salary': 10000, 'floor': 10}, 
{'name': "Mark", 'age': 5, 'salary': 12000, 'floor': 11}, 
{'name': "Pam", 'age': 7, 'salary': 9500, 'floor': 9}
]

Let's say I want to drop key = 'floor' or keys = ['floor', 'salary']. Currently I am using del employees['floor'] inside the loop to delete the key and my_collection.insert_one() to simply write the dictionary into my MongoDB.

My code:

for d in employees:
    del d['floor']
    my_collection.insert_one(d)


Solution 1:[1]

The solution you proposed is the most efficient to use since you have no control on what happens inside the method insert_one.

If you have more keys, just loop over them:

ignored_keys = ['floor', 'salary']
for d in employees:
    for k in ignored_keys:
        del d[k]
    my_collection.insert_one(d)

Solution 2:[2]

Let's say you want to drop keys = ['floor', 'salary']. You can try:

exclude_keys = ['salary', 'floor']
for d in employees:
    my_collection.insert_one({k: d[k] for k in set(list(d.keys())) - set(exclude_keys)})

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Pasquale
Solution 2 Ka-Wa Yip