Hướng dẫn python serialize dict to object - python tuần tự hóa dict thành đối tượng

Hướng dẫn python serialize dict to object - python tuần tự hóa dict thành đối tượng

Xây dựng vấn đề

Đưa ra một từ điển Python chứa danh sách và các cấu trúc dữ liệu khác. Bạn muốn lưu trữ từ điển trong một tệp hoặc gửi nó qua mạng dưới dạng hiệu quả hơn.

Làm thế nào để tuần tự hóa một từ điển Python thành một chuỗi, và sau đó giảm bớt chuỗi trở lại cấu trúc dữ liệu từ điển?

Ở đây, một ví dụ sơ bộ về những gì bạn muốn làm:

Serialization Example
Input: {'Hello': [1, 2, 3], 42: 'World'}
Output: 

Deerialization Example
Input: 
Output: {'Hello': [1, 2, 3], 42: 'World'}

Vì vậy, hãy để Lướt đi vào giải pháp Pythonic nhất ngay lập tức!

Tuần tự hóa và giải phóng một dict bằng dưa chua

Để tuần tự hóa một từ điển nhất định d, chỉ cần nhập mô -đun pickle với import pickle và gán kết quả của

import pickle


d = {'Hello': [1, 2, 3], 42: 'World'}
serialized_d = pickle.dumps(d)
0 cho một biến. Biến này sau đó sẽ giữ một chuỗi nhị phân tuần tự mà bạn có thể sử dụng để lưu trữ từ điển trên máy tính của bạn hoặc gửi qua mạng.

import pickle


d = {'Hello': [1, 2, 3], 42: 'World'}
serialized_d = pickle.dumps(d)

Nếu bạn in biến chuỗi, bạn sẽ nhận được đầu ra chuỗi nhị phân không thể đọc được biểu thị từ điển tuần tự hóa:

print(serialized_d)
# b'\x80\x04\x95!\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x05Hello\x94]\x94(K\x01K\x02K\x03eK*\x8c\x05World\x94u.'

Để giải phóng chuỗi nhị phân được tạo bởi

import pickle


d = {'Hello': [1, 2, 3], 42: 'World'}
serialized_d = pickle.dumps(d)
1 và tạo một đối tượng từ điển mới từ nó, sử dụng hàm
import pickle


d = {'Hello': [1, 2, 3], 42: 'World'}
serialized_d = pickle.dumps(d)
2 và chuyển biểu diễn chuỗi nhị phân tuần tự hóa vào nó. Đầu ra là một đối tượng từ điển mới khác với từ điển không bị hủy bỏ ban đầu.

deserialized_d = pickle.loads(serialized_d)
print(deserialized_d)
# {'Hello': [1, 2, 3], 42: 'World'}

Tóm lại, đây là cách pythonic nhất để tuần tự hóa và giải phóng một từ điển Python:

import pickle


d = {'Hello': [1, 2, 3], 42: 'World'}

# Serialize Dict
serialized_d = pickle.dumps(d)
print(serialized_d)
# b'\x80\x04\x95!\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x05Hello\x94]\x94(K\x01K\x02K\x03eK*\x8c\x05World\x94u.'

# Deserialize Dict
deserialized_d = pickle.loads(serialized_d)
print(deserialized_d)
# {'Hello': [1, 2, 3], 42: 'World'}

Bạn có thể xác nhận rằng từ điển ban đầu và từ điển bị bỏ rơi là các bản sao nhưng don don trỏ đến cùng một đối tượng bằng cách sử dụng toán tử

import pickle


d = {'Hello': [1, 2, 3], 42: 'World'}
serialized_d = pickle.dumps(d)
3:

print(d is deserialized_d)
# False

Nhưng hãy xem xét một sự thay thế không có thư viện đơn giản quá!

Tuần tự hóa và giải phóng một vi phạm-nhanh chóng và bẩn thỉu

Để tuần tự hóa một dict Python bằng cách sử dụng không phụ thuộc bên ngoài và theo cách có thể đọc được của con người, chỉ cần chuyển đổi chuỗi thành từ điển bằng cách sử dụng hàm tích hợp

import pickle


d = {'Hello': [1, 2, 3], 42: 'World'}
serialized_d = pickle.dumps(d)
4. Để giảm dần điều này trở lại, hãy truyền biểu diễn chuỗi của dict vào hàm
import pickle


d = {'Hello': [1, 2, 3], 42: 'World'}
serialized_d = pickle.dumps(d)
5 tích hợp sẽ trả về một đối tượng từ điển mới là bản sao của bản gốc.no external dependency and in an human-readable way, simply convert the string to a dictionary using the built-in function
import pickle


d = {'Hello': [1, 2, 3], 42: 'World'}
serialized_d = pickle.dumps(d)
4. To deserialize this back, pass the string representation of the dict into the built-in
import pickle


d = {'Hello': [1, 2, 3], 42: 'World'}
serialized_d = pickle.dumps(d)
5 function that will return a new dictionary object that is a copy of the original.

d = {'Hello': [1, 2, 3], 42: 'World'}

# Serialize Dict
serialized_d = str(d)
print(serialized_d)

# Deserialize Dict
deserialized_d = eval(serialized_d)
print(deserialized_d)

Ưu điểm của phương pháp này là nó đơn giản và không cần một thư viện. Từ điển nối tiếp cũng có thể đọc được con người. Tuy nhiên, nó rất không hiệu quả so với phương pháp trước vì chuỗi tuần tự hóa đi kèm với rất nhiều chi phí không cần thiết được tối ưu hóa với pickle.

Python

import pickle


d = {'Hello': [1, 2, 3], 42: 'World'}
serialized_d = pickle.dumps(d)
7 là một hàm tích hợp phân tích đối số chuỗi
import pickle


d = {'Hello': [1, 2, 3], 42: 'World'}
serialized_d = pickle.dumps(d)
8 vào biểu thức python, chạy nó và trả về kết quả của biểu thức. Bạn có thể xem video giải thích của tôi về chức năng cụ thể này tại đây:

Python Eval () - Cách đánh giá động biểu thức mã trong Python

Các lựa chọn thay thế hơn nữa

Để hiểu được, cần phải đề cập rằng hai lựa chọn thay thế tồn tại:

  • https://docs.python.org/2/library/ast.html
  • https://pypi.org/project/PyYAML/

Cả hai cũng cung cấp chức năng tuần tự hóa/giải phóng hóa.

Đi đâu từ đây?

Đủ lý thuyết. Hãy để có được một số thực hành!

Các lập trình viên được trả tiền sáu con số và hơn thế nữa vì họ có thể giải quyết các vấn đề hiệu quả hơn bằng cách sử dụng trí thông minh máy móc và tự động hóa.

Để trở nên thành công hơn trong việc mã hóa, giải quyết nhiều vấn đề thực sự hơn cho người thực. Đó là cách bạn đánh bóng các kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, những gì mà việc sử dụng lý thuyết học tập mà không ai cần?

Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế!

Bạn có muốn ngừng học hỏi với các dự án đồ chơi và tập trung vào các dự án mã thực tế kiếm tiền cho bạn và giải quyết các vấn đề thực sự cho mọi người?

Nếu câu trả lời của bạn là có !, Hãy xem xét việc trở thành một nhà phát triển tự do Python! Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện các kỹ năng trăn của bạn, ngay cả khi bạn là người mới bắt đầu hoàn toàn.YES!, consider becoming a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi Làm thế nào để xây dựng kỹ năng thu nhập cao của bạn Python và tìm hiểu cách tôi phát triển kinh doanh mã hóa của mình trực tuyến và làm thế nào bạn có thể, từ sự thoải mái của bạn riêng nhà.

Tham gia hội thảo trên web miễn phí ngay bây giờ!

Hướng dẫn python serialize dict to object - python tuần tự hóa dict thành đối tượng

Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính.

Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer (Nostarch 2020), đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.

Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây.

Bản thân __ dict __ python là gì?

__dict__ trong Python đại diện cho một từ điển hoặc bất kỳ đối tượng ánh xạ nào được sử dụng để lưu trữ các thuộc tính của đối tượng.Chúng còn được gọi là các đối tượng lập bản đồ.represents a dictionary or any mapping object that is used to store the attributes of the object. They are also known as mappingproxy objects.

Munch Python là gì?

Một munch là một từ điển Python cung cấp quyền truy cập kiểu thuộc tính (một đối tượng LA JavaScript).github.com/infinidat/munch.a Python dictionary that provides attribute-style access (a la JavaScript objects). github.com/Infinidat/munch.

Sê -ri Python là gì?

Tái hóa đề cập đến quá trình chuyển đổi một đối tượng dữ liệu (ví dụ: các đối tượng Python, mô hình tenorflow) thành một định dạng cho phép chúng tôi lưu trữ hoặc truyền dữ liệu và sau đó tạo lại đối tượng khi cần sử dụng quá trình khử hóa ngược.

Tuple có phải là python có thể nối tiếp không?

Các bộ dữ liệu Python có thể nối tiếp JSON, giống như danh sách hoặc từ điển.Lớp JsonEncoder hỗ trợ các đối tượng và loại sau theo mặc định.Quá trình chuyển đổi một tuple (hoặc bất kỳ đối tượng Python gốc nào khác) thành chuỗi JSON được gọi là tuần tự hóa., just like lists or dictionaries. The JSONEncoder class supports the following objects and types by default. The process of converting a tuple (or any other native Python object) to a JSON string is called serialization.