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

Find item in list of dicts

I have a list of dictionary something like this:

list = [
   {
      "ENT_AUT":[
         "2018-11-27"
      ]
   },
   {
      "ENT_NAT_REF_COD":"C87193"
   },
   {
      "ENT_NAM":"MONEYBASE LIMITED"
   },
   {
      "ENT_NAM_COM":"MONEYBASE LIMITED"
   },
   {
      "ENT_ADD":"Ewropa Business Centre, Triq Dun Karm"
   },
   {
      "ENT_TOW_CIT_RES":"Birkirkara"
   },
   {
      "ENT_POS_COD":"BKR 9034"
   },
   {
      "ENT_COU_RES":"MT"
   }
]

Here every dictionary will always contain only one key value pair. Now I need to know the value of ENT_NAM, ENT_AUT and etc all fields.

I tried something like this:

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

ENT_NAM = (list[2].values())[0]
print('ENT_NAM = ', ENT_NAM)

It works perfectly for this list but my problem is that the ‘ENT_NAM’ containing dictionary will not always be on the 2nd index of the list. How can I generalize this solution so that even if the order of the dictionary under the list changes, I always find a perfect solution?

>Solution :

If all of the keys are unique, you can flatten the list of dictionaries into a dictionary with a straightforward dictionary comprehension.

Note: you don’t want to use list as a name for a variable, as it is an important built-in type. Use something like lst instead.

{ k: v for d in lst for k, v in d.items() }

Result:

{'ENT_AUT': ['2018-11-27'], 'ENT_NAT_REF_COD': 'C87193', 
 'ENT_NAM': 'MONEYBASE LIMITED', 'ENT_NAM_COM': 'MONEYBASE LIMITED', 
 'ENT_ADD': 'Ewropa Business Centre, Triq Dun Karm', 
 'ENT_TOW_CIT_RES': 'Birkirkara', 'ENT_POS_COD': 'BKR 9034', 
 'ENT_COU_RES': 'MT'}

Getting the value for key 'ENT_NAM' is now just:

{ k: v for d in lst for k, v in d.items() }['ENT_NAM']
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