<p>在这里,我只是通过使用and来解决您的函数,并检查<code>year</code>和<code>category</code>是否与您提供的输入匹配。这样您就可以搜索属于该特定条件的所有值。此外,在检查条件时,<strong><code>year</code>需要被视为字符串,因为它在json文件中是如何表达的。很明显,您可以删除仅用于验证目的的<code>else:</code>行。你知道吗</p>
<pre><code>def get_laureates(category,year,json):
names = []
for j in range(len(json)):
if (json[j]['year'] == str(year)) and (json[j]['category'] == category):
for i in range(len(json[j]['laureates'])):
names.append(json[j]['laureates'][i]['firstname'] + ' ' + json[j]['laureates'][i]['surname'])
else:
print('Not found for category '+category+' and year '+str(year))
return names
print(get_laureates(category='physics',year=2018,json=json))
</code></pre>
<p>输出:</p>
<pre><code>Not found for category physics and year 2018
['Arthur Ashkin', 'Gérard Mourou', 'Donna Strickland']
</code></pre>
<h2>超级一致性检查</h2>
<p>您可以在定义函数后立即添加:</p>
<pre><code>possibilities = ['physics','chemistry']
for i in range(len(possibilities)):
print(get_laureates(category=possibilities[i],year=2018,json=json))
</code></pre>
<p>输出:</p>
<pre><code>Not found for category physics and year 2018
['Arthur Ashkin', 'Gérard Mourou', 'Donna Strickland']
Not found for category chemistry and year 2018
['Frances H. Arnold', 'George P. Smith', 'Sir Gregory P. Winter']
</code></pre>