Home > Net >  How to ignore a single/multiple keys of all the dictionaries while looping over a list of dictionari
How to ignore a single/multiple keys of all the dictionaries while looping over a list of dictionari

Time:02-04

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)

CodePudding user response:

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)

CodePudding user response:

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)})
  •  Tags:  
  • Related