JSON so với từ điển Python

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ụ sau

my_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ụ sau

import 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 ra

print[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ệu

my_dict = {
    "key 1": "value 1",
    "key 2": "value 2"
}
2

Tó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

Sự khác biệt giữa từ điển Python và JSON là gì?

Như đã thảo luận ở trên, JSON là định dạng dữ liệu và từ điển trong python là cấu trúc dữ liệu . Nếu bạn muốn trao đổi dữ liệu cho các quy trình khác nhau, bạn nên sử dụng định dạng JSON để tuần tự hóa từ điển python của mình.

JSON có giống với từ điển Python không?

Một “đối tượng JSON” rất giống với từ điển Python . “Mảng JSON” rất giống với danh sách Python. Cũng giống như cách các đối tượng JSON có thể được lồng trong các mảng hoặc các mảng được lồng trong các đối tượng, từ điển Python có thể được lồng trong danh sách hoặc danh sách được lồng trong từ điển.

JSON chỉ là một từ điển Python?

Ký hiệu đối tượng JavaScript [JSON] là một định dạng chuẩn hóa thường được sử dụng để truyền dữ liệu dưới dạng văn bản có thể được gửi qua mạng. Nó được sử dụng bởi rất nhiều API và Cơ sở dữ liệu và cả người và máy đều dễ dàng đọc được. JSON đại diện cho các đối tượng dưới dạng cặp tên/giá trị, giống như từ điển Python .

JSON có giống như từ điển không?

JSON [Ký hiệu đối tượng JavaScript] là một trong những định dạng phổ biến nhất được sử dụng để truyền dữ liệu giữa các trang web và chương trình. Đó là định dạng mà con người có thể đọc được, nhưng được cấu trúc theo phong cách quen thuộc mà bạn sẽ nhận ra. về cơ bản nó là sự kết hợp giữa từ điển và danh sách .

Chủ Đề