2013-10-04 142 views
2
def make_scores_dict(names, scores): 
    for i in range(len(names)): 
     scores_dict[names[i]] = scores[i] 

    return scores_dict 



names=['Joe', 'Tom', 'Bob', 'Emily', 'Sue'] 
scores=[10, 23, 13, 18, 12] 

dict = make_scores_dict(names, scores) 

print #How do I print out a specific name? This is where I'm stuck at 

本質上,我需要採取2個列表,並使用鍵/值的字典。我被困在如何打印出指定的名字。例如,如果我想打印Emily和她的價值,我會怎麼做?python的詞典

回答

3

你可以做

def make_scores_dict(names, scores): 
    return dict(zip(names, scores)) 

要解決什麼你試圖做:

def make_scores_dict(names, scores): 
    scores_dict = {} 
    for i in range(len(names)): 
     scores_dict[names[i]] = scores[i] 

    return scores_dict 

OR

def make_scores_dict(names, scores): 
    scores_dict = {} 
    for i, name in enumerate(names): 
     scores_dict.update({name: scores[i]}) 
    return scores_dict 
+1

即使作爲另一種選擇,'爲名稱,得分在zip(名稱,分數):scores_dict [name] =得分' – icktoofay

+0

我忘了提及我正在使用2.7。 2.7的zip工作? – juice

+0

是的。 .. – karthikr

2

一旦你做出了dict映射名得分,您可以使用[]

>>> print scores['Emily'] 
18 

請注意,我已經改名dictscores - dict是字典類型的名稱,這是最好不要覆蓋它。一旦你改變了這一切,還有一個更簡潔的方式來創建字典:

>>> scores = dict(zip(names, scores)) 

zip結合任意數量的iterables成對的,如:

>>> zip([1, 2, 3], [4, 5, 6]) 
[(1, 4), (2, 5), (3, 6)] 

它只是碰巧dict可以採取這個格式的元組列表創建一個字典:

>>> dict([('one', 1), ('two', 2)]) 
{'one': 1, 'two': 2}