我坚持编码的最后一部分,需要帮助。
这是我的任务
我需要帮助的部分是关于比较年龄和返回最低值的for / if语句。我知道我希望循环使用所有年龄段,并且仅在使用>时返回最低值。比或者<不是标志,但不知道如何在编码中说出来。
答案 0 :(得分:1)
这样的事情似乎可以解决问题。
def youngest_at_inauguration(db):
youngest = min((db[p][2] for p in db))
return youngest, [key for key in db if db[key][2] == youngest]
你可以通过单步执行字典并保存键值,如果它是目前为止看到的最小值,如果你打算让其他人稍后阅读你的代码,这可能更明确。这种方法更像是对Pythonic方法的测试,可以在最小的空间内完成复杂的任务。
答案 1 :(得分:0)
使用min()
函数的key
参数告诉它在比较元素时应该使用什么。
答案 2 :(得分:0)
要循环显示字典的键和值,请使用.items()
for president, data in p_db.items():
...
您甚至可以像这样自动扩展值元组:
for president, (year, term, age, state, party) in p_db.items():
...
您只需存储两个值,即最小年龄,以及所有具有相同最小年龄的总统的列表。您可以通过p_db
def func(p_db):
min_age = None
presidents = []
for president, (year, term, age, state, party) in p_db.items():
if min_age is None or age < min_age:
min_age = age
presidents = [president]
elif age == min_age:
presidents.append(president)
presidents.sort()
return (min_age, presidents)
答案 3 :(得分:-1)
def youngestprez():
sample_p_db = {
"Ronald Reagan": (1981, 8, 69,"California","Republican"),
"George Bush": (1989, 4, 64,"Texas","Republican"),
"Bill Clinton": (1993, 8, 46,"Arkansas","Democrat") }
min_age = 100
for prez in sample_p_db:
if min_age > sample_p_db[prez][2]:
min_age = sample_p_db[prez][2]
prez_name = prez
return(prez_name, min_age)
youngestprez()