找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

478

积分

0

好友

62

主题
发表于 20 小时前 | 查看: 3| 回复: 0

在Python编程中,掌握高效的数据组织和程序构建思想至关重要。字典作为一种强大的键值对数据结构,能帮助我们灵活地存储和管理数据;而面向对象编程则为构建复杂、可维护的软件系统提供了坚实的框架。本文将深入讲解字典的核心操作与面向对象编程的基础知识,并通过代码示例带你快速上手。

学习目标

  • 字典
    • 能够创建字典,并使用键值对存储和访问数据。
    • 掌握字典的常见操作,如添加键值对、删除键值对(pop())、遍历字典等。
  • 面向对象编程基础
    • 理解类和对象的概念,能够定义简单的类,并创建对象。
    • 掌握类的构造函数(__init__())的使用,用于初始化对象的属性。

字典学习

1. 创建字典

在Python中有多种方式可以创建字典。

  • 直接使用花括号 {} 创建

    # 创建一个简单的字典
    student = {
        “name”: “运维阿生”,
        “age”: 66,
        “major”: “计算机科学”
    }

    在这个例子中,“name”“age”“major”是键,而“运维阿生”66“计算机科学”分别是对应的值。我们可以通过键来访问字典中的值,就像这样:

    print(student[“name”])  # 输出:运维阿生
  • 使用 dict() 构造函数创建

    # 通过传入关键字参数创建字典
    person = dict(name=“ASheng”, age=66, city=“China”)
    print(person)
    # 通过传入可迭代对象(如元组列表)创建字典
    data = [(“key1”, 1), (“key2”, 2), (“key3”, 3)]
    new_dict = dict(data)
    print(new_dict)

    dict()构造函数可以接受不同形式的参数来创建字典。第一种方式是使用关键字参数,第二种方式是传入一个包含键值对元组的可迭代对象。

2. 使用键值对存储和访问数据
  • 存储数据 可以通过为不存在的键赋值来向字典中添加新的键值对,这是实现灵活数据存储和管理的常用方式。

    student = {“name”: “ASheng”, “age”: 66}
    student[“gender”] = “Female”
    print(student)

    这里,我们为student字典添加了一个新的键“gender”,并将其值设置为“Female”

  • 访问数据 可以使用方括号[]或者get()方法来访问字典中的值。

    student = {“name”: “ASheng”, “age”: 66, “major”: “Computer Science”}
    # 使用方括号访问
    print(student[“name”])  # 输出:ASheng
    # 使用 get() 方法访问
    print(student.get(“age”))  # 输出:66
    
    # 当键不存在时,使用方括号会引发 KeyError 异常
    # print(student[“height”])  # 会引发 KeyError
    
    # 使用 get() 方法可以指定默认值
    print(student.get(“height”, “Unknown”))  # 输出:Unknown

    get()方法的好处是当键不存在时,不会引发异常,而是返回指定的默认值(如果没有指定默认值,则返回None)。

3. 字典的常见操作
  • 添加键值对 除了前面提到的直接赋值的方式,还可以使用update()方法一次性添加多个键值对。

    student = {“name”: “ASheng”, “age”: 66}
    new_info = {“major”: “Computer Science”, “gender”: “Female”}
    student.update(new_info)
    print(student)

    update()方法接受一个字典或者包括键值对的可迭代对象作为参数,将其键值对添加到原字典中。

  • 删除键值对

    • pop()方法:用于删除指定键的键值对,并返回该键对应的值。如果键不存在,可以指定默认值,避免引发KeyError异常。
      student = {“name”: “ASheng”, “age”: 66, “major”: “Computer Science”}
      removed_age = student.pop(“age”)
      print(removed_age)  # 输出:66
      print(student)  # 输出:{‘name’: ‘ASheng’, ‘major’: ‘Computer Science’}
      # 指定默认值
      removed_height = student.pop(“height”, “Unknown”)
      print(removed_height)  # 输出:Unknown
    • popitem()方法:随机删除并返回字典中的一个键值对(在Python 3.7及以后版本中,会删除并返回最后插入的键值对)。
      student = {“name”: “ASheng”, “age”: 66, “major”: “Computer Science”}
      popped_item = student.popitem()
      print(popped_item)  # 例如输出:(‘major’, ‘Computer Science’)
      print(student)  # 输出:{‘name’: ‘ASheng’, ‘age’: 66}
    • del语句:可以直接删除指定键值对。
      student = {“name”: “ASheng”, “age”: 66, “major”: “Computer Science”}
      del student[“major”]
      print(student)  # 输出:{‘name’: ‘ASheng’, ‘age’: 66}
  • 遍历字典 a. 遍历键

    student = {“name”: “ASheng”, “age”: 66, “major”: “Computer Science”}
    for key in student:  # 等同于 for key in student.keys():
        print(key)

    这里for循环直接遍历字典时,默认遍历的是字典的键。 b. 遍历值

    student = {“name”: “Alice”, “age”: 20, “major”: “Computer Science”}
    for value in student.values():
        print(value)

    使用values()方法可以获取字典中所有的值,并进行遍历。 c. 同时遍历键和值

    student = {“name”: “Alice”, “age”: 20, “major”: “Computer Science”}
    for key, value in student.items():
        print(f“{key}: {value}”)

    items()方法返回一个包含键值对元组的可迭代对象,通过for循环可以同时获取键和值。

面向对象编程基础

1. 理解类和对象的概念,定义简单的类并创建对象

类是一种抽象的概念,它定义了一组对象的共同属性和行为。对象是类的具体实例。

# 定义一个简单的类
class Circle:
    def calculate_area(self, radius):
        import math
        return math.pi * radius ** 2

# 创建 Circle 类的对象
circle1 = Circle()
area = circle1.calculate_area(5)
print(area)  # 输出圆的面积

在这个例子中,Circle是一个类,它定义了一个方法calculate_area()用于计算圆的面积。circle1Circle类的一个对象,通过这个对象可以调用类中定义的方法。

2. 掌握类的构造函数(__init__())的使用

构造函数__init__()是一个特殊的方法,在创建对象时会自动调用,用于初始化对象的属性。

class Rectangle:
    def __init__(self, length, width):
        self.length = length
        self.width = width

    def calculate_area(self):
        return self.length * self.width

# 创建 Rectangle 类的对象
rectangle1 = Rectangle(4, 5)
area = rectangle1.calculate_area()
print(area)  # 输出:20

Rectangle类中,__init__()方法接受lengthwidth作为参数,并将它们赋值给对象的属性self.lengthself.width。这样,在创建Rectangle对象时,就必须提供lengthwidth的值,对象的属性会在创建时被初始化。

3. 类的属性和方法

类的属性可以分为实例属性和类属性。实例属性是每个对象独有的,而类属性是所有对象共享的。方法是定义在类中的函数,用于描述对象的行为。

class Dog:
    # 类属性
    species = “Canis familiaris”

    def __init__(self, name, age):
        # 实例属性
        self.name = name
        self.age = age

    def bark(self):  # 实例方法
        print(f“{self.name} says Woof!”)

# 创建 Dog 类的对象
dog1 = Dog(“Buddy”, 3)
dog2 = Dog(“Max”, 5)

# 访问类属性
print(dog1.species)  # 输出:Canis familiaris
print(dog2.species)  # 输出:Canis familiaris

# 访问实例属性
print(dog1.name)  # 输出:Buddy
print(dog2.age)   # 输出:5

# 调用实例方法
dog1.bark()  # 输出:Buddy says Woof!
dog2.bark()  # 输出:Max says Woof!

在这个例子中,species是类属性,所有Dog类的对象都共享这个属性。nameage是实例属性,每个对象都有自己独立的nameage值。bark()是实例方法,通过对象可以调用该方法。理解这种面向对象的编程思想是构建模块化、可复用代码的关键。

课后练习

  1. 创建一个字典,存储学生的姓名和对应的成绩,然后编写代码计算所有学生的平均成绩。
  2. 定义一个Animal类,包含属性name和方法make_sound()(打印动物发出的声音)。然后定义一个Dog类,继承自Animal类,并重写make_sound()方法,使其打印狗的叫声(如“Woof!”)。创建一个Dog类的对象,并调用make_sound()方法。

总结

本节内容涵盖了Python中字典的核心操作与面向对象编程的基础概念。字典以其键值对结构提供了高效灵活的数据组织方式,而面向对象编程则通过类与对象的概念,为设计复杂程序提供了结构化的蓝图。熟练掌握字典的增删改查和遍历,以及理解类、对象、构造函数和属性的关系,是Python编程进阶的坚实基础。后续可以进一步探索字典推导式、嵌套字典等高级用法,以及类的继承、多态等更深入的面向对象特性。




上一篇:Doris表模型选择实战指南:明细、主键与聚合表性能优化解析
下一篇:SpringCloud Config配置中心详解:原理、架构与动态刷新实战
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区(YunPan.Plus) ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-6 22:47 , Processed in 0.084092 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 CloudStack.

快速回复 返回顶部 返回列表