2013-02-05 63 views
1

我是一個新手,我的問題很簡單。我有兩個陣列如下:將一個聆聽字母數組分配給一個數組列表

Grade = ["A","A-","B+","B","B-","C+","C","C-","D","F"] 
GPA = [4,3.75,3.25,3,2.75,2.25,2,1.75,1,0] 

如何從列表中分配A = 4,A- = 3.75等等。

請幫忙!!

+0

使用eval python命令。 –

+0

例如A-和B +不是有效的變量名稱。 –

+2

@Michel Keijzers永遠不要使用eval。編輯'locals','globals',無論如何,但不是評估。 –

回答

5

只需使用zip功能:

grade_gpa = zip(Grade, GPA) 
for pair in grade_gpa: 
    print(pair) 
>>> 
('A', 4) 
('A-', 3.75) 
('B+', 3.25) 
('B', 3) 
('B-', 2.75) 
('C+', 2.25) 
('C', 2) 
('C-', 1.75) 
('D', 1) 
('F', 0) 

而且你可以構造一個字典出的zip對象:

grade_gpa_dict = dict(grade_gpa) 
print(grade_gpa_dict['A']) 
>>> 4 
+0

第一部分沒問題。 但是當我運行: grade_gpa_dict =字典(grade_gpa) 打印(grade_gpa_dict [ 'A']) 它給了我鑰匙的錯誤! – user2042721

+1

@ user2042721:'zip'對象'grade_gpa'只能在Python 3中迭代一次,所以如果你在打印循環之後從它做出一個字典,那什麼也沒有。只需使用'grade_gpa_dict = dict(zip(Grade,GPA))'。 – DSM

-1

使用內置的map/reduce:

import functools 

a = map(lambda x,y : {x:y}, Grade, GPA) 
b = functools.reduce(lambda x,y: dict(x.items() + y.items()), a) 

b["A"] => 4 
+0

'reduce()':http://docs.python.org/3.0/whatsnew/3.0.html#builtins –

+0

這比'dict(zip(Grade,GPA))'更好嗎? –

+0

事實上,我沒有看到問題標籤中的「3.x」,我的不好。這不是比你的答案「更好」,只是不同的^^ BTW我已經編輯了我的答案,他們推送的包的名稱減少了。 – Ketouem

相關問題