回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在学校做一项作业,我被要求列出某一特定年份和类别的诺贝尔和平奖得主名单。
这是JSON文件的示例:</p>
<pre><code>[{
'year': '2018',
'category': 'physics',
'overallMotivation': '“for groundbreaking inventions in the field of laser physics”',
'laureates': [{
'id': '960',
'firstname': 'Arthur',
'surname': 'Ashkin',
'motivation': '"for the optical tweezers and their application to biological systems"',
'share': '2'
}, {
'id': '961',
'firstname': 'Gérard',
'surname': 'Mourou',
'motivation': '"for their method of generating high-intensity, ultra-short optical pulses"',
'share': '4'
}, {
'id': '962',
'firstname': 'Donna',
'surname': 'Strickland',
'motivation': '"for their method of generating high-intensity, ultra-short optical pulses"',
'share': '4'
}
]
}, {
'year': '2018',
'category': 'chemistry',
'laureates': [{
'id': '963',
'firstname': 'Frances H.',
'surname': 'Arnold',
'motivation': '"for the directed evolution of enzymes"',
'share': '2'
}, {
'id': '964',
'firstname': 'George P.',
'surname': 'Smith',
'motivation': '"for the phage display of peptides and antibodies"',
'share': '4'
}, {
'id': '965',
'firstname': 'Sir Gregory P.',
'surname': 'Winter',
'motivation': '"for the phage display of peptides and antibodies"',
'share': '4'
}
]
}
]
</code></pre>
<p>我应该找到一种方法,找到谁赢得了一个特定的类别和年份的人的全名,这是我目前的代码</p>
<pre><code>def get_laureates(dict_prizes, year = "none", category = "none"):
names = []
for row in dict_prizes:
if row["category"] == category:
names.append(row["firstname"] + row['surname'])
return names
year = 2018
category = "peace"
get_laureates(dict_prizes, year = 2018, category = "peace")
</code></pre>
<p>这就是输出</p>
<pre><code> TypeError Traceback (most recent call last)
<ipython-input-168-57a2293c1bca> in <module>
11 category = "peace"
12 # test your function here
---> 13 get_laureates(dict_prizes, category = "peace")
<ipython-input-168-57a2293c1bca> in get_laureates(dict_prizes, year, category)
4 names = []
5 for row in dict_prizes:
----> 6 if row["category"] == category and row["year"] == year:
7 names.append(row["firstname"] + row['surname'])
8 return names
TypeError: string indices must be integers
</code></pre>
<p>我知道这段代码中有很多错误,我无法将year转换成整数,即使去掉“years”参数,也无法仅用category生成结果。任何帮助都将不胜感激,因为我完全不懂JSON(给我的阅读材料只是教我如何转储和加载)。你知道吗</p>