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.
list_of_jobs[0]
Output:
{Job : Sailor, People : [Martin, Joseph]}
If you want to access People attribute of the first dictionary, you can do it like this:
list_of_jobs[0][People]
Output:
[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.
list_of_jobs[0][People].append(Andrew)
list_of_jobs[0][People].pop(1)
Now, list_of_jobs will have this state:
[
{Job : Sailor, People : [Martin, Andrew]},
{Job : Teacher, People : [Alex, Maria]}
]
job_dict={}
job_dict[Sailor]=[Martin,Joseph]
job_dict[Teacher]=[Alex,Maria]
if you want to add Marcos as a Sailor, you can:
(job_dict[Sailor]).append(Marcos)
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]}]