Python 如何将两个列表合并到一个字典中,其中键可以有多个值?

Python 如何将两个列表合并到一个字典中,其中键可以有多个值?,python,python-3.x,Python,Python 3.x,下面两个列表相互匹配,爱丽丝的年龄是20岁,鲍勃的年龄是21岁,依此类推 names = ["Alice", "Bob", "Cathy", "Dan", "Ed", "Frank", "Gary", "Helen", "Irene", "Jack", "Kelly", "Larry"] ages = [20, 21, 18, 18, 19, 20, 20, 19, 19, 19, 22, 19] 编写一个程序,将这些列表合并到字典中。键将是年龄,值将是名称,因此键可以有多个值,并且 像这样:

下面两个列表相互匹配,爱丽丝的年龄是20岁,鲍勃的年龄是21岁,依此类推

names = ["Alice", "Bob", "Cathy", "Dan", "Ed", "Frank", "Gary", "Helen", "Irene", "Jack", "Kelly", "Larry"]
ages = [20, 21, 18, 18, 19, 20, 20, 19, 19, 19, 22, 19]
编写一个程序,将这些列表合并到字典中。键将是年龄,值将是名称,因此键可以有多个值,并且 像这样:

{20: ['Alice', 'Frank', 'Gary'], 
 21: ['Bob'], 
 18: ['Cathy', 'Dan'], 
 19: ['Ed', 'Helen', 'Irene', 'Jack', 'Larry'], 
 22: ['Kelly']}
我尝试过以下几种方法:

{20: ['Alice', 'Frank', 'Gary'], 
 21: ['Bob'], 
 18: ['Cathy', 'Dan'], 
 19: ['Ed', 'Helen', 'Irene', 'Jack', 'Larry'], 
 22: ['Kelly']}
newDict=dict(zip(年龄、姓名)) 打印(newDict)

它们都输出: {20:'加里',21:'鲍勃',18:'丹',19:'拉里',22:'凯利'}

试试这个:

from collections import defaultdict
age_name = defaultdict(list)

for age, name in zip(ages, names):
    age_name[age].append(name)
Defaultdicts可能非常有用。它们会自动为新密钥创建默认容器

编辑:不使用defaultdicts

age_name = dict()
for age, name in zip(ages, names):
    if age not in age_name.keys():
        age_name[age] = list()
    age_name[age].append(name)

请把你试过的东西贴出来&在哪些方面有缺陷。你试过什么了吗?现在,听起来好像你在要求我们为你做家庭作业,这不是堆栈溢出的目的。我必须在不导入任何内容的情况下执行此操作:(