如何在Python中将多列表数据整合为字典并实现输入存储打印?
解决方案:将列表数据合并为字典
你的现有代码通过zip()得到的是元组组成的列表,而非字典。根据需求,这里提供两种常见的字典合并方式:
1. 每个家庭成员对应一个字典(组成字典列表)
这种方式适合需要保留所有成员完整结构的场景,每个成员的信息都包含明确的键名。
方式A:循环时直接构建字典列表
size = input("Enter size of family: ") family_list = [] for _ in range(int(size)): name = input("Enter name: ") birthyear = int(input("Enter birthyear: ")) address = input("Enter address: ") # 直接创建包含成员信息的字典并加入列表 family_list.append({ "name": name, "birthyear": birthyear, "address": address }) print(family_list)
方式B:基于现有列表转换为字典列表
如果想保留原有的三个独立列表,可通过列表推导式将zip()生成的元组转换为字典:
size = input("Enter size of family: ") names = [] year = [] address = [] for _ in range(int(size)): names.append(input("Enter name: ")) year.append(int(input("Enter birthyear: "))) address.append(input("Enter address: ")) # 将元组列表转换为字典列表 family_list = [{"name": n, "birthyear": y, "address": a} for n, y, a in zip(names, year, address)] print(family_list)
输出示例:
[{'name': 'Alice', 'birthyear': 1985, 'address': '123 Main St'}, {'name': 'Bob', 'birthyear': 1988, 'address': '456 Oak Ave'}]
2. 以姓名为键构建字典
如果家庭成员姓名唯一,可将姓名作为字典的键,对应的值是包含出生年和地址的子字典:
size = input("Enter size of family: ") family_dict = {} for _ in range(int(size)): name = input("Enter name: ") birthyear = int(input("Enter birthyear: ")) address = input("Enter address: ") family_dict[name] = {"birthyear": birthyear, "address": address} print(family_dict)
输出示例:
{'Alice': {'birthyear': 1985, 'address': '123 Main St'}, 'Bob': {'birthyear': 1988, 'address': '456 Oak Ave'}}
内容的提问来源于stack exchange,提问作者Al Bundy
相关产品推荐
相关产品推荐

