Trong hướng dẫn này, bạn sẽ học cách chuyển đổi tệp hoặc chuỗi JSON thành từ điển Python. Khả năng làm việc với dữ liệu JSON là một kỹ năng quan trọng, do tính phổ biến của định dạng tệp. Khả năng chuyển đổi định dạng này sang từ điển Python sẽ giúp bạn làm việc với cả lĩnh vực phát triển web và khoa học dữ liệu
Tuần này chúng ta sẽ xem nhanh việc sử dụng từ điển python và định dạng dữ liệu JSON. Sau khi đọc bài đăng này, bạn sẽ có hiểu biết cơ bản về cách làm việc với dữ liệu JSON và từ điển trong python. Tôi sẽ chọn chủ đề này vì một số bài đăng trong tương lai về công việc với python và API, trong đó hiểu biết cơ bản về định dạng dữ liệu JSON là hữu ích
Tôi thêm các ví dụ [không đặc biệt] từ bài đăng này vào kho lưu trữ các ví dụ tập lệnh python của mình trên GitHub
Từ điển python là gì?Từ điển python là một danh sách được lập chỉ mục theo các giá trị chính. Giá trị khóa có thể là bất kỳ loại dữ liệu bất biến nào, chuỗi được sử dụng trong hầu hết các trường hợp. Cấu trúc dữ liệu từ điển cũng thường được gọi là “mảng kết hợp” trong các ngôn ngữ lập trình khác
Một từ điển có thể được tạo bằng chức năng
my_dict = {
"key 1": "value 1",
"key 2": "value 2"
}
3. Để truy cập một giá trị trong từ điển python, bạn sử dụng dấu ngoặc vuông sau tên biến, như ví dụ sau mô tảmy_dictionary["my key"] = "Value"
print[my_dictionary["my key"]]
Nếu không tìm thấy khóa trong từ điển, một ngoại lệ sẽ được đưa ra. Để lấy danh sách tất cả các khóa đã xác định trong từ điển, bạn có thể sử dụng phương thức
my_dict = {
"key 1": "value 1",
"key 2": "value 2"
}
4 trên đối tượng từ điển. Bạn cũng có thể tạo từ điển python bằng cách sử dụng dấu ngoặc nhọn, như được mô tả trong ví dụ saumy_dict = {
"key 1": "value 1",
"key 2": "value 2"
}
Bạn cũng có thể thêm danh sách và từ điển lồng nhau vào cấu trúc dữ liệu và truy cập nó bằng nhiều dấu ngoặc vuông. Việc sử dụng từ điển python rất đơn giản và theo quan điểm của tôi, mã dễ đọc hơn trong nhiều trường hợp. Nếu bạn muốn biết thêm về cấu trúc dữ liệu từ điển python, bạn có thể tìm thêm thông tin trong tài liệu chính thức về python
JSON là gì?
JSON là viết tắt của ký hiệu Đối tượng JavaScript và là một định dạng dữ liệu tiêu chuẩn mở mà con người có thể đọc được. Nó được định nghĩa trong RFC 7159. Nhiều API hoạt động với định dạng này để cung cấp và nhận dữ liệu, như chúng ta đã thấy trong bài đăng về Cisco NX-API trên Nexus 5500. Các lựa chọn thay thế phổ biến cho JSON là YAML và XML. Bài viết trên Wikipedia về JSON cung cấp một tổng quan và giải thích rất tốt, do đó tôi sẽ chỉ tóm tắt các thành phần định dạng cơ bản
Tệp JSON trống chỉ chứa hai dấu ngoặc nhọn
my_dict = {
"key 1": "value 1",
"key 2": "value 2"
}
0. Ví dụ sau mô tả một số định nghĩa giá trị cơ bản. Các câu lệnh nhiều giá trị trong JSON được phân tách bằng dấu phẩy{
"text key": "string",
"integer key": 123,
"boolean key": true,
"simple list": [
"value 1",
"value 2"
],
"dict": {
"element 1": "value 1",
"element 2": "value 2"
},
"dict list": [
{
"key 1.1": "value 1.1",
"key 1.2": "value 1.2"
},
{
"key 2.1": "value 2.1",
"key 2.2": "value 2.2"
}
]
}
Bạn có thể nhận thấy rằng các định nghĩa này khá giống với định nghĩa giá trị trong từ điển python
Làm việc với từ điển và dữ liệu JSON trong python
Để làm việc với dữ liệu định dạng JSON trong python, chúng tôi sẽ sử dụng mô-đun python json tích hợp. Chúng ta có thể sử dụng mô-đun này để tải bất kỳ dữ liệu có định dạng JSON nào từ một chuỗi hoặc tệp, như ví dụ mã sau đây mô tả
import json
# you can also use the open function to read the content of a JSON file to a string
json_data = """ {
"key 1": "value 1",
"key 2": "value 2",
"decimal": 10,
"boolean": true,
"list": [1, 2, 3],
"dictionary": {
"child key 1": "child value",
"child key 1": "child value"
}
}"""
my_dict = json.loads[json_data]
Bây giờ bạn có thể làm việc với dữ liệu như với từ điển python thông thường
print["string value: %s" % my_dict["key 1"]]
print["decimal value: %d" % my_dict["decimal"]]
print["decimal value: %r" % my_dict["boolean"]]
print["list values: %s" % my_dict["list"]]
Bạn có thể sử dụng hàm
my_dict = {
"key 1": "value 1",
"key 2": "value 2"
}
1 để tạo chuỗi định dạng JSON từ từ điển, như trong ví dụ sauimport json
my_dictionary = {
"key 1": "Value 1",
"key 2": "Value 2",
"decimal": 100,
"boolean": False,
"list": [1, 2, 3],
"dict": {
"child key 1": "value 1",
"child key 2": "value 2"
}
}
print[json.dumps[my_dictionary]]
Đầu ra từ lệnh kết xuất này khá phức tạp, bởi vì nó sẽ không sử dụng bất kỳ loại thụt đầu dòng nào theo mặc định. Để tạo đầu ra dễ đọc hơn, bạn có thể thêm tham số
my_dict = {
"key 1": "value 1",
"key 2": "value 2"
}
2 vào lời gọi hàm, điều này sẽ thêm một số thứ bậc và chú ý vào đầu raprint[json.dumps[my_dictionary, indent=4]]
Theo mặc định, các khóa trong từ điển python không được sắp xếp và đầu ra của hàm
my_dict = {
"key 1": "value 1",
"key 2": "value 2"
}
3 có thể khác khi thực thi nhiều lần. Tôi gặp sự cố này khi viết một số trường hợp thử nghiệm, nhưng đặt tham số my_dict = {
"key 1": "value 1",
"key 2": "value 2"
}
4 thành true sẽ giải quyết được sự cố. Điều này sẽ sắp xếp các giá trị chính của từ điển và sẽ luôn tạo ra cùng một đầu ra khi sử dụng cùng một dữ liệumy_dict = {
"key 1": "value 1",
"key 2": "value 2"
}
2Tóm tắt và kết thúc
Tôi làm việc rất nhiều với định dạng JSON trong các tập lệnh của mình, vì tính đơn giản và dễ đọc hơn. Hơn nữa, nó có thể được sử dụng bởi nhiều mô-đun và trường hợp sử dụng khác, như bạn có thể thấy trong trình tạo cấu hình với bài đăng python và Jinja2. Trong trường hợp này, chúng tôi sử dụng từ điển python để cung cấp các tham số cho các mẫu
Trong những tuần tới, tôi sẽ tìm hiểu sâu hơn về việc sử dụng API REST với python. Đối với những ví dụ này, cần có hiểu biết cơ bản về định dạng JSON và từ điển python. Nếu bạn có bất kỳ câu hỏi nào và/hoặc thông tin bổ sung, vui lòng để lại nhận xét bên dưới. Cảm ơn vì đã đọc