Update values of a list of dictionaries in python

Update values of a list of dictionaries in python

If you have a list of dictionary like this:

list_of_jobs = [
  {Job : Sailor, People : [Martin, Joseph]},
  {Job : Teacher, People : [Alex, Maria]}

You can access the dictionary by index.


{Job : Sailor, People : [Martin, Joseph]}

If you want to access People attribute of the first dictionary, you can do it like this:


[Martin, Joseph]

If you want to modify the value of that list of people, you can use append() to add an item or pop() to remove an item from the list.


Now, list_of_jobs will have this state:

  {Job : Sailor, People : [Martin, Andrew]},
  {Job : Teacher, People : [Alex, Maria]}

if you want to add Marcos as a Sailor, you can:


Update values of a list of dictionaries in python

Your data structure is not ideal for the job; consider using a different one and then changing to yours in the very end:

data = Martin;Sailor;-0.24 Joseph_4;Sailor;-0.12 Alex;Teacher;-0.23 Maria;Teacher;-0.57
data = [r.split()[-1] for r in data.split(;)]
# data = [Martin, Sailor, Joseph_4, Sailor, Alex, Teacher, Maria, Teacher, -0.57]

# for the moment use one dict keyed with jobs for easy updating
out = {}
for name, job in zip(data[::2], data[1::2]):
    out.setdefault(job, []).append(name)
# out = {Sailor: [Martin, Joseph_4], Teacher: [Alex, Maria]}

# in the very end, convert to desired output format
out = [{Job: job, People: people} for job, people in out.items()]
# out = [{Job: Sailor, People: [Martin, Joseph_4]}, {Job: Teacher, People: [Alex, Maria]}]

Leave a Reply

Your email address will not be published. Required fields are marked *