Python 使用给定的列表创建嵌套字典

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程序的实用性和效率。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程