2017-10-06 42 views
1

我剛剛開始編碼這個學期,所以如果你可以使用簡單的方法來幫助我找到我的答案,我會很感激。基本上,我只是希望它打印每個字典的名稱,然後列出它的內容。哦,只是你知道,我實際上甚至不喜歡運動,這只是我之前想要改進的作業。下面是我得到了什麼,是的,我知道這不我希望它的工作方式:如何打印每個字典的名稱?

football = { 
      'favorite player': 'Troy Aikman', 
      'team': 'Dallas Cowboys', 
      'number': '8', 
      'position': 'quarterback' 
      } 
baseball = { 
      'favorite player': 'Jackie Robinson', 
      'team': 'Brooklyn Dodgers', 
      'number': '42', 
      'position': 'second baseman' 
      } 
hockey = { 
      'favorite player': 'Wayne Gretzky', 
      'team': 'New York Rangers', 
      'number': '99', 
      'position': 'center' 
     } 

sports = [football, baseball, hockey] 
my_sports = ['Football', 'Baseball', 'Hockey'] 
for my_sport in my_sports: 
    print(my_sport) 
for sport in sports: 
    for question, answer in sport.items(): 
     print(question.title + ": " + answer) 
    print("\n") 

我希望它打印:

Football 
Favorite player: Troy Aikman 
Team: Dallas Cowboys 
Number: 8 
Position: quarterback 

Baseball: 
Favorite player: Jackie Robinson 
Team: Brooklyn Dodgers 
Number: 42 
Position: second baseman 

...等等。我如何實現我想要的結果?該越好簡單,請使用Python 3,我什麼都不知道的Python 2.

+1

那麼,我可以問你爲什麼試圖做'question.title'嗎?那應該拋出一個'AttributeError'?你目前看到的行爲是? –

+0

它看起來像標題是在一個列表(my_sports),但數據是在另一個列表(體育)。他們通過故意巧合在同一索引中逐項對齊,因此您只需以相同的方式訪問它們即可。或者使用「for range in index(len(my_sports)」或查找python「zip」函數。祝你好運 –

+0

Dictionaries *沒有名字*。變量有名字,但是當你失去與原始變量的連接時你建立了'sports'列表,你可以在每個字典中添加一個項目名稱,或者在名稱,運動zip(sports,my_sports)中:'並行地循環兩個列表。 – jasonharper

回答

1
my_sports = {'Football': football, 'Baseball' : baseball, 'Hockey' : hockey} 
for key,value in my_sports.items(): 
    print(key) 

    for question, answer in value.items(): 
     print(question + ": " + answer) 
    print("\n") 
+0

啊!謝謝!這正是我想要的! –

+0

@Ginger:運動詞典鍵和相關值(在代碼中命名爲「question」和「answer」)的順序是任意的,甚至可以在運動之間變化。這在很多其他答案中也是一個常見問題。 – martineau

0

的更新:

修改我的答案,現在下面的代碼工作:

my_sports = {'Football': football, 'Baseball' : baseball, 'Hockey' : hockey} 

for key,value in my_sports.items(): 
    print(key) 

    for question, answer in value.items(): 
     print(question + ": " + answer) 
    print("\n") 

這是結果:

Football 
Favorite Player: Troy Aikman 
Team: Dallas Cowboys 
Number: 8 
Position: quarterback 


Baseball 
Favorite Player: Jackie Robinson 
Team: Brooklyn Dodgers 
Number: 42 
Position: second baseman 


Hockey 
Favorite Player: Wayne Gretzky 
Team: New York Rangers 
Number: 99 
Position: center 

代碼在這裏: https://repl.it/MOBO/3

+0

這是打印所有'sport.keys()'項目作爲_every_運動的每一次迭代的外層p'。除此之外,打印內容的順序將是不可預測的,因爲字典不會保留順序。 – martineau

+0

我更新了我的答案,請檢查。 @馬蒂奧 –

0

你可以試試這個:

sports = {"football":football, "baseball":baseball, "hockey":hockey} 
for a, b in sports.items(): 
    print(a) 
    for c, d in b.items(): 
     print("{}: {}".format(c, d)) 

輸出:

football 
position: quarterback 
favorite player: Troy Aikman 
number: 8 
team: Dallas Cowboys 
baseball 
position: second baseman 
favorite player: Jackie Robinson 
number: 42 
team: Brooklyn Dodgers 
hockey 
position: center 
favorite player: Wayne Gretzky 
number: 99 
team: New York Rangers 
0

內置zip功能似乎是結合最簡單的方法,並從兩個列表對向上的元素。以下是如何使用它:

sports = [football, baseball, hockey] 
my_sports = ['Football', 'Baseball', 'Hockey'] 

for my_sport, sport in zip(my_sports, sports): 
    print('\n'.join((
     '{}', # name of sport 
     'Favorite player: {favorite player}', 
     'Team: {team}', 
     'Number: {number}', 
     'Position: {position}')).format(my_sport, **sport) + '\n' 
    )