Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Remove uncommon keys from two dictionaries in Python

I’m writing a program in Python that is meant to remove uncommon keys and their associated values from two dictionaries. For example, given the following dictionaries:

games =
{ 'WYO': {2018: (41, 19)}, 
'SJSU': {2018: (31, 0)}, 
'EWU': {2018: (59, 24)}, 
'USC': {2018: (36, 39), 2020: (13, 38), 2021: (14, 45)}, 
'UTAH': {2018: (28, 24), 2019: (13, 38), 2020: (28, 45), 2021: (13, 24)}, 
'ORST': {2018: (56, 37), 2019: (54, 53), 2020: (38, 28), 2021: (31, 24)}, 
'ORE': {2018: (34, 20), 2019: (35, 37), 2020: (29, 43), 2021: (24, 38)}, 
'STAN': {2018: (41, 38), 2019: (49, 22), 2021: (34, 31)}, 
'CAL': {2018: (19, 13), 2019: (20, 33), 2021: (21, 6)}, 
'COLO': {2018: (31, 7), 2019: (41, 10)}, 
'ARIZ': {2018: (69, 28), 2021: (44, 18)}, 
'WASH': {2018: (15, 28), 2019: (13, 31), 2021: (40, 13)}, 
'ISU': {2018: (28, 26)}, 
'NMSU': {2019: (58, 7)}, 
'UNCO': {2019: (59, 17)}, 
'HOU': {2019: (31, 24)}, 
'UCLA': {2019: (63, 67)}, 
'ASU': {2019: (34, 38), 2021: (34, 21)}, 
'AFA': {2019: (21, 31)}, 
'USU': {2021: (23, 26)}, 
'PORT ST.': {2021: (44, 24)}, 
'BYU': {2021: (19, 21)}, 
'CMU': {2021: (21, 24)} }

and

comp_dict = {2018:(0,0), 2019:(0,0), 2020:(0,0), 2021:(0,0)}

I want to remove all the keys and their associated values from games that don’t have all the same keys as comp_dict. The result would be:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

{ 'UTAH': {2018: (28, 24), 2019: (13, 38), 2020: (28, 45), 2021: (13, 24)}, 
'ORST': {2018: (56, 37), 2019: (54, 53), 2020: (38, 28), 2021: (31, 24)}, 
'ORE': {2018: (34, 20), 2019: (35, 37), 2020: (29, 43), 2021: (24, 38)} }

I’m trying to create a copy of games called commonteams, that I can remove the uncommon elements from. This is what I have so far:

def common_teams(data):
     comp_dict = {2018:(0,0), 2019:(0,0), 2020:(0,0), 2021:(0,0)}
     games = data
     commonteams = games
     for team,log in games.items():
          if  log.keys() != comp_dict.keys():
               commonteams.pop(team)
     return commonteams

>Solution :

In a case like this, it’s usually best to copy over the things you want into a new object, rather than modify the one you have, especially when you are iterating through the old object.

def common_teams(data):
     newdict = {}
     for team,log in games.items():
          if  log.keys() == comp_dict.keys():
               newdict[team] = log
     return newdict

print(common_teams(games))
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading