使用 Python 中给定的列表创建嵌套字典
Python 字典是灵活的数据结构,可以有效地存储键值对。嵌套字典是一种分层数据结构,用于组织和管理大量数据。本文展示了如何从给定的列表构建嵌套字典,使字典用户能够执行各种任务。
语法
嵌套多层字典以适应复杂的数据结构。
nested_dict = { 'outer_key': { 'inner_key': 'value' } }
算法
1. 创建一个新的字典来包含分层结构。
2. 迭代地遍历给定的列表。
3. 提取列表中每个项目所需的键和值信息。
4. 验证嵌套字典以查看外部键是否存在。
5. 如果存在,请查看该外部键的内部键是否存在。
6. 否则,添加或更改值。
7. 如果缺少外部键,则使用指定的键值对构建一个新的内部字典,并将其添加到嵌套字典中。
示例
employee_list = [
(101, 'John', 30, 'HR'),
(102, 'Jane', 28, 'Engineering'),
(103, 'Mike', 32, 'Finance')
]
employee_data = {}
for employee in employee_list:
employee_id, name, age, department = employee
if department in employee_data:
employee_data[department][employee_id] = {'name': name, 'age': age}
else:
employee_data[department] = {employee_id: {'name': name, 'age': age}}
问题陈述是:使用员工数据创建嵌套字典。这应该将员工数据分组为表示员工 ID、姓名、年龄和部门的元组。
创建一个名为 employee data 的空字典。通过循环遍历员工列表来存储员工 ID、姓名、年龄和部门等信息。如果部门作为外部键存在于 employee data 中,则更新员工信息。如果不存在,则使用键员工 ID 构建一个新的内部字典,并存储员工数据。
其他示例
1. 假设他们有一个学生在不同学科中成绩的列表。根据他们的成绩或表现,使用基于层次结构的数据结构来组织这些数据。
2. 有多个商品在不同地区的销售数据。根据产品类别和位置,使用分层字典将此数据转换为结构化形式。
当然!下面的代码示例演示了生成和操作复杂嵌套字典的方法。
带用户输入的嵌套字典
nested_dict = {}
num_employees = int(input("Total headcount? :"))
for i in range(num_employees):
employee_id = int(input(f"Enter Employee {i+1} ID: "))
name = input(f"Enter Employee {i+1} Name: ")
age = int(input(f"Employee {i+1} Age: "))
department = input(f"Employee {i+1} Department: ")
if department in nested_dict:
nested_dict[department][employee_id] = {'name': name, 'age': age}
else:
nested_dict[department] = {employee_id: {'name': name, 'age': age}}
print("Nested Dictionary:", nested_dict)
使用 defaultdict 的嵌套字典
from collections import defaultdict
employee_list = [
(101, 'John', 30, 'HR'),
(102, 'Jane', 28, 'Engineering'),
(103, 'Mike', 32, 'Finance'),
(104, 'Alice', 25, 'Engineering'),
]
employee_data = defaultdict(dict)
for employee in employee_list:
employee_id, name, age, department = employee
employee_data[department][employee_id] = {'name': name, 'age': age}
print("Nested Dictionary using defaultdict:", dict(employee_data))
合并两个嵌套字典
sales_data1 = {
'ProductA': {'Region1': 100, 'Region2': 200},
'ProductB': {'Region1': 150, 'Region3': 300},
}
sales_data2 = {
'ProductA': {'Region2': 250, 'Region4': 180},
'ProductC': {'Region1': 120, 'Region3': 80},
}
merged_sales_data = {}
for product, region_data in sales_data1.items():
merged_sales_data[product] = region_data.copy()
for product, region_data in sales_data2.items():
if product in merged_sales_data:
merged_sales_data[product].update(region_data)
else:
merged_sales_data[product] = region_data
print("Merged Sales Data:", merged_sales_data)
访问嵌套字典中的值
student_grades = {
'John': {'Math': 90, 'Science': 85, 'History': 78},
'Jane': {'Math': 95, 'English': 88, 'Science': 92},
}
jane_science_grade = student_grades['Jane']['Science']
print("Jane's Science Grade:", jane_science_grade)
john_history_grade = student_grades.get('John', {}).get('History', 'Not available')
print("John's History Grade:", john_history_grade)
应用
对分层数据结构的处理示例包括建模组织层次结构、文件系统或配置。
管理复杂数据,例如嵌套 JSON 对象、图形或多维数据集。
描述事物之间的连接,例如依赖关系或父子关系。
有效遍历、探索或排序分层数据结构的算法。
结论
本文说明了如何使用列表在 Python 中构建嵌套字典。详细讨论了安装、语法和算法。嵌套字典是处理和组织数据的有效工具。列表使访问和修改数据结构的特定部分变得简单,从而提高了 Python 程序的实用性和效率。
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP