我是一個新手,我的問題很簡單。我有兩個陣列如下:將一個聆聽字母數組分配給一個數組列表
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',無論如何,但不是評估。 –