2016-04-15 16 views
-3

私はこのコーディングの最後の部分で立ち往生しており、助けが必要です。辞書内でループする

は、ここに私の仕事

私は助けを必要と一部であるために/だけの年齢を比較し、最小値を返す上のif文。私はすべての年齢層をループして、>よりも小さいか、または<という記号を使用して符号を返すだけで、コーディングでそれをどのように語るかわからないことを知っています。

+2

あなたはこれまでに何を試しましたか?期待通りに動作しなくても、あなたの質問を追加する必要があります – xgord

+0

これまでのコメント – Jessica

答えて

0

min()関数の引数keyを使用して、要素を比較するときに使用する必要のある情報を指定します。

for president, (year, term, age, state, party) in p_db.items(): 
    ... 

あなたが唯一の2つの値を格納する必要があります。

辞書のキーと値をループする
0

、あなたは、あなたも自動的にこのような値のタプルを拡張することができ.items()

for president, data 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) 
+0

returnステートメントの前に 'presidents.sort()'を実行するだけです。 –

+0

@Jessica私は答えを更新しました –

+0

あなたは最大の年齢をしたいときにどのようなスイッチを教えてくださいできますか? – Jessica

1

を通じて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] 

あなたは辞書をステップ実行し、それが他の人が後にコードを読み取るようにするためにあなたは予定がある場合は、より明確にすることがあり、これまでにも見最小である場合は、キー値を保存することによってそれを行うことができます。この方法は、最小限のスペースで複雑なタスクを実行するPythonの方法のテストです。

-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() 
関連する問題