📅  最后修改于: 2023-12-03 15:19:30.063000             🧑  作者: Mango
在Python中,数据类型之间的转换是非常常见的操作。本篇文章将为你介绍如何进行数据类与其他数据类型的相互转换。
你可以使用json
模块将数据类与字符串进行相互转换。
下面是如何将数据类转换为字符串:
import json
@dataclass
class Point:
x: float
y: float
point = Point(1.0, 2.0)
str_repr = json.dumps(asdict(point))
使用dumps
函数将数据类的字典表示转换为字符串。
下面是如何将字符串转换为数据类:
import json
@dataclass
class Point:
x: float
y: float
str_repr = '{"x": 1.0, "y": 2.0}'
point = Point(**json.loads(str_repr))
使用loads
函数将字符串转换为字典表示,然后将其传给数据类构造函数。
你可以使用asdict
函数将数据类与字典进行相互转换。
下面是如何将数据类转换为字典:
@dataclass
class Point:
x: float
y: float
point = Point(1.0, 2.0)
dict_repr = asdict(point)
下面是如何将字典转换为数据类:
@dataclass
class Point:
x: float
y: float
dict_repr = {"x": 1.0, "y": 2.0}
point = Point(**dict_repr)
将字典作为关键字参数传给数据类构造函数即可。
你可以使用astuple
函数将数据类与元组进行相互转换。
下面是如何将数据类转换为元组:
@dataclass
class Point:
x: float
y: float
point = Point(1.0, 2.0)
tuple_repr = astuple(point)
下面是如何将元组转换为数据类:
@dataclass
class Point:
x: float
y: float
tuple_repr = (1.0, 2.0)
point = Point(*tuple_repr)
将元组拆包后作为位置参数传给数据类构造函数即可。
你可以使用from_dict
函数将数据类与序列进行相互转换。
下面是如何将数据类转换为列表:
@dataclass
class Point:
x: float
y: float
point = Point(1.0, 2.0)
list_repr = list(asdict(point).values())
将数据类的字典表示取值后,放入列表中即可。
下面是如何将列表转换为数据类:
@dataclass
class Point:
x: float
y: float
list_repr = [1.0, 2.0]
point = Point(*list_repr)
将列表拆包后作为位置参数传给数据类构造函数即可。
下面是如何将数据类转换为集合:
@dataclass
class Point:
x: float
y: float
point1 = Point(1.0, 2.0)
point2 = Point(2.0, 3.0)
set_repr = {asdict(point1), asdict(point2)}
将数据类的字典表示作为集合元素。
下面是如何将集合转换为数据类:
@dataclass
class Point:
x: float
y: float
set_repr = [{"x": 1.0, "y": 2.0}, {"x": 2.0, "y": 3.0}]
points = [Point(**item) for item in set_repr]
使用集合中的字典元素实例化多个数据类即可。
至此,本篇文章介绍了如何进行数据类与其他数据类型的相互转换。代码中使用了json
模块,需要注意安装。