Python 如何创建包含列表的词典?

Python 如何创建包含列表的词典?,python,list,dictionary,Python,List,Dictionary,我想创建一个字典,其中列表作为键,列表作为值 我尝试了下面的代码,但它只取了我成绩列表中的最后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 f

我想创建一个字典,其中列表作为键,列表作为值

我尝试了下面的代码,但它只取了我成绩列表中的最后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:[成绩列表]、name:[成绩列表]…

当您应该并行迭代姓名和成绩列表时,您正在使用嵌套循环生成姓名和成绩的笛卡尔乘积,您可以使用zip:

输出:

{'Jerry': [100, 90, 80], 'Terry': [88, 99, 111], 'Larry': [45, 56, 67], 'Harry': [59, 61, 67], 'Mary': [73, 79, 83], 'Carry': [89, 97, 101]}

当您应该并行迭代名称和等级列表时,使用嵌套循环生成名称和等级的笛卡尔乘积,您可以使用zip:

输出:

{'Jerry': [100, 90, 80], 'Terry': [88, 99, 111], 'Larry': [45, 56, 67], 'Harry': [59, 61, 67], 'Mary': [73, 79, 83], 'Carry': [89, 97, 101]}
您可以使用zip并行地迭代名称和等级,然后将其传递给dict构造函数,dict构造函数可以从一组键和值生成一个字典

test3 = dict(zip(names, grades))
您可以使用zip并行地迭代名称和等级,然后将其传递给dict构造函数,dict构造函数可以从一组键和值生成一个字典

test3 = dict(zip(names, grades))
不需要循环

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]}
不需要循环

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]}