[英]How to create a dictionary with a list of list?
我想創建一個字典,其中一個列表作為鍵,而一個列表作為我的值。
我在下面嘗試了以下代碼,但它只使用了成績列表的最后3個值。 我被困在應該如何指定列表列表以正確遍歷每個名稱的問題上。
grades = [[100, 90, 80], [88, 99, 111], [45, 56, 67], [59, 61, 67], [73, 79, 83], [89, 97, 101]]
names = ['Jerry', 'Terry', 'Larry', 'Harry', 'Mary', 'Carry']
test3 = {k:row for row in grades2 for k in names}
print(test3)
Out: {'Jerry': [89, 97, 101], 'Terry': [89, 97, 101], 'Larry': [89, 97, 101], 'Harry': [89, 97, 101], 'Mary': [89, 97, 101], 'Carry': [89, 97, 101]}
我的預期結果是{name:[list of grades],name:[list of grades]...
data = {name:grade for name, grade in zip(names, grades)}
您可以使用zip
並行地迭代名稱和等級,然后將其傳遞給dict
構造函數,該構造函數可以使鍵和值的迭代成為字典。
test3 = dict(zip(names, grades))
當您應該並行迭代names
和grades
列表時,您正在使用嵌套循環(產生names
和grades
的笛卡爾積),可以使用zip
:
test3 = {k : row for k, row in zip(names, grades)}
print(test3)
輸出:
{'Jerry': [100, 90, 80], 'Terry': [88, 99, 111], 'Larry': [45, 56, 67], 'Harry': [59, 61, 67], 'Mary': [73, 79, 83], 'Carry': [89, 97, 101]}
無需循環!
test3 = dict(zip(names, [x for x in grades]))
Out: {'Jerry': [100, 90, 80],
'Terry': [88, 99, 111],
'Larry': [45, 56, 67],
'Harry': [59, 61, 67],
'Mary': [73, 79, 83],
'Carry': [89, 97, 101]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.