Python 记录、结构体和纯数据对象 使用方法攻略
在 Python 中,有多种方式可以表示结构化数据。其中包括记录、结构体和纯数据对象。本文将详细介绍这三种数据结构的定义、使用和区别。
记录
记录是由一系列键值对组成的数据结构。在 Python 中,记录通常使用 dict 类型来表示。
定义记录的语法为:
my_record = {
"key1": value1,
"key2": value2,
...
}
其中,key1
、ke2
等表示记录的键,value1
、value2
等表示记录的值。
我们也可以使用 dict()
内置函数创建记录:
my_record = dict(key1=value1, key2=value2, ...)
读取记录的值时,可以使用 []
运算符:
print(my_record["key1"]) # 输出 value1
更新记录的值时,可以直接使用赋值运算符:
my_record["key1"] = new_value1
下面是一个简单的示例:
address_book = {
"Alice": "alice@example.com",
"Bob": "bob@example.com",
"Charlie": "charlie@example.com"
}
# 读取 Alice 的邮箱
print(address_book["Alice"])
# 更新 Bob 的邮箱
address_book["Bob"] = "bob@newexample.com"
# 输出所有记录
for name, email in address_book.items():
print(f"{name} 的邮箱是 {email}")
输出结果为:
alice@example.com
Alice 的邮箱是 alice@example.com
Bob 的邮箱是 bob@newexample.com
Charlie 的邮箱是 charlie@example.com
结构体
结构体是一种自定义数据类型,用于表示多个不同类型的数据。在 Python 中,可以使用 namedtuple
来定义结构体。
定义结构体的语法为:
from collections import namedtuple
MyStruct = namedtuple("MyStruct", ["field1", "field2", ...])
其中,MyStruct
是结构体的名称,["field1", "field2", ...]
是结构体的字段名。
创建结构体实例时,需要为每个字段提供一个值:
my_struct = MyStruct(value1, value2, ...)
读取结构体的字段值时,可以使用 .
运算符:
print(my_struct.field1) # 输出 value1
下面是一个简单的示例:
from collections import namedtuple
Person = namedtuple("Person", ["name", "age", "gender"])
# 创建两个 Person 实例
alice = Person(name="Alice", age=25, gender="female")
bob = Person(name="Bob", age=30, gender="male")
# 输出 Alice 和 Bob 的信息
print(f"{alice.name} {alice.age} {alice.gender}")
print(f"{bob.name} {bob.age} {bob.gender}")
输出结果为:
Alice 25 female
Bob 30 male
纯数据对象
纯数据对象是一种只包含数据而不包含任何方法的对象。在 Python 中,可以使用 object()
内置函数来创建纯数据对象。
定义纯数据对象的语法为:
my_object = object()
我们可以使用 setattr()
函数来给纯数据对象动态添加属性:
my_object = object()
setattr(my_object, "field1", value1)
# 读取属性值
print(my_object.field1)
下面是一个简单的示例:
class Rectangle:
pass
# 创建两个 Rectangle 实例
rect1 = Rectangle()
rect2 = Rectangle()
# 为 rect1 动态添加属性
setattr(rect1, "width", 5)
setattr(rect1, "height", 10)
# 为 rect2 动态添加属性
setattr(rect2, "width", 3)
setattr(rect2, "height", 6)
# 计算面积并输出
area1 = rect1.width * rect1.height
area2 = rect2.width * rect2.height
print(area1, area2)
输出结果为:
50 18
总结
本文介绍了 Python 中三种常用的结构化数据类型:记录、结构体和纯数据对象。记录使用 dict 类型表示,结构体使用 namedtuple
类型表示,纯数据对象使用 object()
类型表示。它们分别适用于不同的场景,选择合适的数据类型能够使代码更加清晰易懂。