在Python中更新一个字典列表的值

12

我有一个看起来像这样的 CSV 文件:

Martin;Sailor;-0.24
Joseph_4;Sailor;-0.12
Alex;Teacher;-0.23
Maria;Teacher;-0.57
我的目标是创建一个包含每个工作的字典列表。
例如:
list_of_jobs = [{'Job' : Sailor, 'People' : ['Martin', 'Joseph']}
                 {'Job' : Teacher, 'People' : ['Alex', 'Maria']}
] 

我创建了这些字典,但是我无法弄清如何更新list_of_jobs['People']的值。

有人能帮我吗?

3个回答

11
如果您有这样的字典列表:
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']}
如果你想要访问第一个字典的“People”属性,你可以这样做:
list_of_jobs[0]['People']

Output:
['Martin', 'Joseph']

如果您想修改那个人员列表的值,您可以使用append()添加一个项目或pop()从列表中删除一个项目。

list_of_jobs[0]['People'].append('Andrew')
list_of_jobs[0]['People'].pop(1)

现在,list_of_jobs的状态将如下所示:

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

6
job_dict={}
job_dict['Sailor']=['Martin','Joseph']
job_dict['Teacher']=['Alex','Maria']

如果你想将“Marcos”添加为一名水手,可以执行以下操作:

(job_dict['Sailor']).append('Marcos')

2

您的数据结构并不适合这项工作;考虑使用其他数据结构,最后再切换回您的数据结构:

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']}]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接