Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

deleting entries in a dictionary based on a condition

I have a dictionary with names as key and (age, Date of Birth) tuple as the value for those keys. E.g.

dict = {'Adam' : (10, '2002-08-13'),
        'Eve'  : (40, '1972-08-13')}

I want to delete all the keys which have age > 30 for their age in value tuple, how can I do that? I am accessing age of each key using dict[name][0] where dict is my dictionary.

like image 769
Justin Carrey Avatar asked Aug 13 '12 17:08

Justin Carrey


People also ask

Can I use Clear () method to delete the dictionary?

Python Dictionary clear() The clear() method removes all items from the dictionary.

Which function used for deleting elements from dictionary?

The del keyword method uses the keyword from the dictionary to remove an item.


1 Answers

The usual way is to create a new dictionary containing only the items you want to keep:

new_data = {k: v for k, v in data.items() if v[0] <= 30} 

If you need to change the original dictionary in place, you can use a for-loop:

for k, v in list(data.items()):     if v[0] > 30:         del data[k] 

Note that list(data.items()) creates a shallow copy of the items of the dictionary, i.e. a new list containing references to all keys and values, so it's safe to modify the original dict inside the loop.

like image 144
Sven Marnach Avatar answered Oct 08 '22 22:10

Sven Marnach