我是一个新手,我的问题很简单。我有两个阵列如下:将一个聆听字母数组分配给一个数组列表
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等等。
请帮忙!!
我是一个新手,我的问题很简单。我有两个阵列如下:将一个聆听字母数组分配给一个数组列表
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等等。
请帮忙!!
只需使用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
第一部分没问题。 但是当我运行: grade_gpa_dict =字典(grade_gpa) 打印(grade_gpa_dict [ 'A']) 它给了我钥匙的错误! – user2042721
@ user2042721:'zip'对象'grade_gpa'只能在Python 3中迭代一次,所以如果你在打印循环之后从它做出一个字典,那什么也没有。只需使用'grade_gpa_dict = dict(zip(Grade,GPA))'。 – DSM
使用内置的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
'reduce()':http://docs.python.org/3.0/whatsnew/3.0.html#builtins –
这比'dict(zip(Grade,GPA))'更好吗? –
事实上,我没有看到问题标签中的“3.x”,我的不好。这不是比你的答案“更好”,只是不同的^^ BTW我已经编辑了我的答案,他们推送的包的名称减少了。 – Ketouem
使用eval python命令。 –
例如A-和B +不是有效的变量名称。 –
@Michel Keijzers永远不要使用eval。编辑'locals','globals',无论如何,但不是评估。 –