在Python中,pickle
模塊是用于序列化和反序列化Python對象的工具,包括復雜的數據結構
以下是一個示例,展示了如何使用pickle
處理包含多種數據類型的復雜數據結構:
import pickle
# 定義一個復雜的數據結構
data = {
"list": [1, 2, 3, "hello", {"key": "value"}],
"tuple": (1, 2, 3),
"set": {1, 2, 3},
"dict": {
"key1": "value1",
"key2": "value2",
"key3": ["item1", "item2"],
},
}
# 將數據結構序列化為字節流
serialized_data = pickle.dumps(data)
# 將字節流反序列化為原始數據結構
deserialized_data = pickle.loads(serialized_data)
print("Original data:", data)
print("Deserialized data:", deserialized_data)
輸出:
Original data: {'list': [1, 2, 3, 'hello', {'key': 'value'}], 'tuple': (1, 2, 3), 'set': {1, 2, 3}, 'dict': {'key1': 'value1', 'key2': 'value2', 'key3': ['item1', 'item2']}}
Deserialized data: {'list': [1, 2, 3, 'hello', {'key': 'value'}], 'tuple': (1, 2, 3), 'set': {1, 2, 3}, 'dict': {'key1': 'value1', 'key2': 'value2', 'key3': ['item1', 'item2']}}
在這個示例中,我們首先定義了一個包含列表、元組、集合和字典的復雜數據結構。然后,我們使用pickle.dumps()
函數將其序列化為字節流。接下來,我們使用pickle.loads()
函數將字節流反序列化為原始數據結構。最后,我們打印了原始數據結構和反序列化后的數據結構,可以看到它們是相同的。