2013-02-05 62 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

相关问题