Tuples Python là gì

Một tuple là một dãy các đối tượng không thay đổi [immutable] trong Python, vì thế tuple không thể bị thay đổi. Các tuple cũng là các dãy giống như List.

Không giống List mà sử dụng các dấu ngoặc vuông, thì tuple sử dụng các dấu ngoặc đơn. Các đối tượng trong tuple được phân biệt bởi dấu phảy và được bao quanh bởi dấu ngoặc đơn []. Giống như chỉ mục của chuỗi, chỉ mục của tuple bắt đầu từ 0.

Ví dụ:

>>> data=[10,20,'ram',56.8] >>> data2="a",10,20.9 >>> data [10, 20, 'ram', 56.8] >>> data2 ['a', 10, 20.9] >>>

Ghi chú: Nếu các dấu ngoặc đơn không được cung cấp với một dãy, thì nó được coi như là tuple.

Một tuple trống không chứa phần tử nào, ví dụ:

tup1 = [];

Với một tuple chỉ có một giá trị đơn, thì phải có một dấu phảy ở cuối, ví dụ:

tup1 = [50,];

Các tuple cũng có thể được lồng vào nhau, ví dụ:

tupl1='a','hoang',10.56 tupl2=tupl1,[10,20,30] print tupl1 print tupl2

Quảng cáo

Kết quả:

>>> ['a', 'hoang', 10.56] [['a', 'hoang', 10.56], [10, 20, 30]] >>>

Truy cập các giá trị trong tuple trong Python

Để truy cập các giá trị trong tuple, bạn sử dụng cách tương tự như khi truy cập các phần tử trong List. Ví dụ:

tup1 = ['vatly', 'hoahoc', 1997, 2000]; tup2 = [1, 2, 3, 4, 5, 6, 7 ]; print "tup1[0]: ", tup1[0] print "tup2[1:5]: ", tup2[1:5]

Khi code trên được thực thi sẽ cho kết quả:

tup1[0]: vatly tup2[1:5]: [2, 3, 4, 5]

Các hoạt động cơ bản trên tuple trong Python

Giống như String và List, bạn cũng có thể sử dụng toán tử nối + và toán tử lặp * với tuple. Điểm khác biệt là nó tạo ra một tuple mới, không tạo ra một chuỗi hay list.

Ví dụ cho toán tử +:

data1=[1,2,3,4] data2=['x','y','z'] data3=data1+data2 print data1 print data2 print data3

Kết quả là:

>>> [1, 2, 3, 4] ['x', 'y', 'z'] [1, 2, 3, 4, 'x', 'y', 'z'] >>>

Ghi chú: Dãy mới được tạo là một Tuple mới.

Ví dụ cho toán tử +:

tuple1=[10,20,30]; tuple2=[40,50,60]; print tuple1*2 print tuple2*3

Kết quả là:

>>> [10, 20, 30, 10, 20, 30] [40, 50, 60, 40, 50, 60, 40, 50, 60] >>>

Xóa các phần tử của tuple trong Python

Xóa các phần tử đơn của tuple là điều không thể. Bạn chỉ có thể xóa toàn bộ tuple với lệnh del như ví dụ sau:

data=[10,20,'hoang',40.6,'z'] print data del data #se xoa du lieu cua tuple print data #se hien thi mot error boi vi tuple da bi xoa

Code trên sẽ cho kết quả sau. Bạn chú ý rằng sẽ có một exception được tạo ra, đó là bởi vì sau khi xóa tup thì tuple này không tồn tại nữa.

>>> [10, 20, 'hoang', 40.6, 'z'] Traceback [most recent call last]: File "C:/Python27/t.py", line 4, in >module< print data NameError: name 'data' is not defined >>>

Quảng cáo

Các phần tử của Tuple không thể được cập nhật. Đó là bởi vì tuple là không thay đổi [immutable]. Tuy nhiên, các tuple có thể được sử dụng để tạo nên một tuple mới.

Ví dụ sau sẽ tạo một exception:

data=[10,20,30] data[0]=100 print data

Khi code trên được thực thi sẽ cho kết quả:

>>> Traceback [most recent call last]: File "C:/Python27/t.py", line 2, in >module< data[0]=100 TypeError: 'tuple' object does not support item assignment >>>

Ví dụ tạo một tuple mới từ các tuple đang tồn tại:

data1=[10,20,30] data2=[40,50,60] data3=data1+data2 print data3

Khi code trên được thực thi sẽ cho kết quả:

>>> [10, 20, 30, 40, 50, 60] >>>

Tập hợp đối tượng mà không có dấu giới hạn

Bất kỳ tập hợp nào gồm nhiều đối tượng, được phân biệt bởi dấu phảy, được viết mà không có các biểu tượng nhận diện [chẳng hạn như dấu ngoặc vuông cho List, dấu ngoặc đơn cho Tuple, …] thì Python mặc định chúng là Tuple. Ví dụ:

print 'abc', -4.24e93, 18+6.6j, 'xyz' x, y = 1, 2; print "Gia tri cua x , y : ", x,y

Khi code trên được thực thi sẽ cho kết quả:

abc -4.24e+93 [18+6.6j] xyz Gia tri cua x , y : 1 2

Các hàm được xây dựng sẵn cho tuple trong Python

Bảng dưới liệt kê các hàm đã được xây dựng sẵn để thao tác với Tuple trong Python, bạn theo link để tìm hiểu chi tiết:

Tại sao chúng ta sử dụng tuple?

  • Trình xử lý các tuple là nhanh hơn các List.

  • Làm cho dữ liệu an toàn hơn bởi vì tuple là không thay đổi [immutable] và vì thế nó không thể bị thay đổi.

  • Các tuple được sử dụng để định dạng String.

Trong Python, tuple là một kiểu chuỗi [sequence] bất biến. Hàm dựng sẵn tuple[] trong Python được sử dụng để tạo một tuple.

Cú pháp hàm tuple[] trong Python

tuple[iterable]

Tham số của hàm tuple[]

Hàm tuple[] trong Python có tham số :

  • iterable: các iterable được tích hợp sẵn [như list, string, dict] hoặc iterator object.

Giá trị trả về từ tuple[]

  • Nếu không có tham số nào được truyền, tuple[] trả về một tuple rỗng.
  • Nếu tham số iterable được truyền, tuple[] trả về tuple tương ứng.

Ví dụ: Cách tạo tuple bằng tuple[]?

t1 = tuple[]
print['t1=', t1]

# tạo một tuple từ list
t2 = tuple[[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]]
print['t2=', t2]

# tạo một tuple từ string
t1 = tuple['Quantrimang']
print['t1=',t1]

# tạo một tuple từ dictionary
t1 = tuple[{1: 'one', 2: 'two'}]
print['t1=',t1]

Chạy chương trình, kết quả trả về là:

t1= []
t2= [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
t1= ['Q', 'u', 'a', 'n', 't', 'r', 'i', 'm', 'a', 'n', 'g']
t1= [1, 2]

Xem thêm: Các hàm Python tích hợp sẵn

Tuple trong Python là gì?

Tuple có thể coi như tập hợp của các đối tượng bất biến trong Python. Sự khác biệt giữa danh sách [list] và tuple đó là danh sách được khai báo trong ngoặc vuông và có thể được thay đổi trong khi tuple được khai báo trong ngoặc đơn và không thể thay đổi. Tuy nhiên, bạn có thể lấy một phần của các tuple hiện có để tạo tuple mới.

Cú pháp

Tup = ['Jan','feb','march']

Để tạo một tuple trống, bạn cần viết dưới dạng hai dấu ngoặc đơn nhưng không chứa nội dung:

tup1 = []

Cũng giống như list các chỉ số trong tuple được bắt đầu từ 0

Trong bài này, chúng ta sẽ tìm hiểu về:

  • Đóng gói và giải nén một tuple

  • So sánh các tuple

  • Xóa Tuples

  • Cắt lát Tuple

  • Các tính năng dựng sẵn của tuple

  • Ưu điểm của tuple so với danh sách

Gán tuple

Phép gán tuple có cú pháp như sau

tuple = [, , ..., ]

Ví dụ:

tup1 = ['Robert', 'Carlos','1965','Terminator 1995', 'Actor','Florida'] tup2 = [1,2,3,4,5,6,7] print[tup1[0]] print[tup2[1:4]]
  • Tuple1 bao gồm danh sách thông tin của Robert

  • Tuple2 bao gồm danh sách các số trong đó

  • Chúng ta sẽ trả về giá trị [0] trong tuple1 và trả về giá trị từ 1 tới 3 [4-1] đối với tuple2.

  • Chạy đoạn mã trên – Chương trình trả về tên Robert đối với tuple1 và trả về số [2,3 và 4] đối với tuple2.

Đóng gói và giải nén tuple

Đối với quá trình đóng gói [packing], chúng ta gán giá trị cho một tuple mới, còn đối với quá trình giải nén [unpacking], chúng ta trích xuất các giá trị đó và gán cho biến.

x = ["Guru99", 20, "Education"] # tuple packing [company, emp, profile] = x # tuple unpacking print[company] print[emp] print[profile]

So sánh các tuples

Toán tử so sánh trong Python có thể làm việc với tuple.

Quá trình so sánh bắt đầu với phần tử đầu tiên của mỗi tuple. Nếu phép so sánh =, < hoặc > không thể được thực hiện với phần tử đầu tiên thì phần tử thứ hai sẽ được duyệt đến.

Quá trình bắt đầu bằng việc so sánh phần tử đầu tiên của mỗi tuple.

Cùng tìm hiểu ví dụ sau:

Trường hợp 1

a=[5,6] b=[1,4] if [a>b]:print["a is bigger"] else: print["b is bigger"]

Trường hợp 2

a=[5,6] b=[5,4] if [a>b]:print["a is bigger"] else: print ["b is bigger"]

Trường hợp 3

a=[5,6] b=[6,4] if [a>b]:print["a is bigger"] else: print["b is bigger"]

#Trường hợp 1: Phép so sánh bắt đầu với phần tử đầu tiên của mỗi tuple. Trong trường hợp này 5 > 1, do đó, kết quả trả về “a is bigger”.

#Trường hợp 2: Phép so sánh bắt đầu với phần tử đầu tiên của mỗi tuple. Trong trường hợp này không thể kết luận 5 > 5. Vì vậy, chương trình duyệt tới phần tử tiếp theo: 6>4, do đó, trả về kết quả “a is bigger”..

#Trường hợp 3: Phép so sánh bắt đầu với phần tử đầu tiên của mỗi tuple. Trong trường hợp này 5 > 6 là sai, vì vậy chương trình thực hiện câu lệnh trong vòng else và trả về kết quả "b is bigger".

Tuple và từ điển

Từ điển có thể trả về danh sách các tuple bằng cách gọi hàm items[], trong đó mỗi tupel là một cặp khóa-giá trị.

a = {'x':100, 'y':200} b = list[a.items[]] print[b]

Kết quả:

[['x', 100], ['y', 200]]

Xóa Tuples

Tuple không thể bị thay đổi, nhưng ta có thể xóa hoàn toàn tuple bằng từ khóa “del”.

Cắt lát tuple

Để trả về tập các phần tử con trong tuple hoặc danh sách, chúng ta sử dụng phương thức đặc biệt gọi là cắt lát [slice]. Cắt lát không chỉ có thể áp dụng cho tuple mà còn có thể áp dụng cho chuỗi[string] hoặc danh sách[list].

x = ["a", "b","c", "d", "e"] print[x[2:4]]

Đầu ra của đoạn mã trên sẽ là ['c', 'd'].

Đây là mã nguồn sử dụng Python 2 cho tất cả các ví dụ trên

tup1 = ['Robert', 'Carlos','1965','Terminator 1995', 'Actor','Florida']; tup2 = [1,2,3,4,5,6,7]; print tup1[0] print tup2[1:4] #Packing and Unpacking x = ["Guru99", 20, "Education"] # tuple packing [company, emp, profile] = x # tuple unpacking print company print emp print profile #Comparing tuples #case 1 a=[5,6] b=[1,4] if [a>b]:print "a is bigger" else: print "b is bigger" #case 2 a=[5,6] b=[5,4] if [a>b]:print "a is bigger" else: print "b is bigger" #case 3 a=[5,6] b=[6,4] if [a>b]:print "a is bigger" else: print "b is bigger" #Tuples and dictionary a = {'x':100, 'y':200} b = a.items[] print b #Slicing of Tuple x = ["a", "b","c", "d", "e"] print x[2:4]

Ưu điểm của tuple so với danh sách

  • Duyệt tuple nhanh hơn so với danh sách vì tuple là không thể thay đổi, nó được lưu ở bộ nhớ tĩnh.

  • Nếu bạn có dữ liệu là bất biến, việc triển khai nó dưới dạng tuple sẽ đảm bảo rằng dữ liệu này sẽ không bị ghi đè.

Tổng kết:

Python có tính năng gán tuple cho phép bạn gán nhiều biến cùng một lúc.

  • Đóng gói và giải nén Tuples

    • Đối với quá trình đóng gói, chúng ta gán giá trị cho một tuple mới, còn đối với quá trình giải nén, chúng ta trích xuất các giá trị đó và gán cho biến.

  • Toán tử so sánh trong python có thể làm việc với tuple

  • Tuple là ko thể thay đổi, nhưng có thể xóa hoàn toàn tuple bằng từ khóa “del”.

  • Để trả về tập các phần tử con trong tuple hoặc danh sách, chúng ta sử dụng phương thức đặc biệt gọi là cắt lát.

Page 2

Thế nào là một lớp?

Một lớp là một nhóm logic của dữ liệu và phương thức. Nó cho phép tự do tạo các cấu trúc dữ liệu chứa nội dung tùy ý và qua đó khiến việc truy cập dễ dàng hơn.

Ví dụ: Khi nhân viên ngân hàng muốn tìm hiểu chi tiết khách hàng trực tuyến sẽ chuyển đến lớp khách hàng, trong đó tất cả các thuộc tính của khách hàng như chi tiết giao dịch, chi tiết rút tiền và tiền gửi, nợ tồn đọng, v.v. sẽ được liệt kê ra.

Trong bài này, chúng ta sẽ tìm hiểu:

  • Cách định nghĩa lớp trong Python

  • Cách hoạt động của kế thừa

  • Hàm khởi tạo trong Python

Cách định nghĩa lớp Python

Để định nghĩa lớp, bạn cần chú ý những điểm sau:

Bước 1] Trong Python, các lớp được xác định bởi từ khóa "Class"

class myClass[]:

Bước 2] Bên trong các lớp, bạn có thể định nghĩa hàm hoặc phương thức thuộc lớp đó

def method1 [self]: print "Guru99" def method2 [self,someString]: print "Software Testing:" + someString
  • Ở đây chúng ta đã định nghĩa method1 sẽ in ra "Guru99."

  • Một phương thức khác mà chúng ta đã xác định là method2 sẽ in ra "Software Testing" + someString. Trong đó someString là biến được cung cấp ở lời gọi hàm.

Bước 3] Mọi thứ trong một lớp đều được thụt lề, giống như mã trong hàm, vòng lặp, câu lệnh if, v.v. Những lệnh không được thụt lề đều không nằm trong lớp

LƯU Ý: Về việc sử dụng "self" trong Python

  • Đối số self dùng để chỉ tới chính bản thân đối tượng. Đó là lý do từ “self – bản thân” được sử dụng. Vì vậy trong phương thức này, self sẽ trỏ tới thực thể của đối tượng mà ta đang thao tác trên đó.

  • Self là tên được quy ước bởi Pythons để chỉ ra tham số đầu tiên của các phương thức trong lớp. Nó là một phần cú pháp trong Python được sử dụng để truy cập vào thành viên của đối tượng.

Bước 4] Để tạo một đối tượng của lớp

c = myClass[]

Bước 5] Để gọi một phương thức trong một lớp

c.method1 [] c.method2 ["Testing is fun"]
  • Lưu ý rằng khi chúng ta gọi method1 hoặc method2, chúng ta không phải cung cấp từ khóa self. Điều này được tự động thực hiện khi chạy Python.

  • Khi Python chạy, giá trị “self” sẽ tự động được truyền vào phương thức của lớp dù bạn có chủ động truyền nó vào hay không.

  • Bạn chỉ cần quan tâm tới các đối số khác self.

Bước 6] Đây là đoạn mã hoàn chỉnh

# Example file for working with classes class myClass[]: def method1[self]: print["Guru99"] def method2[self,someString]: print["Software Testing:" + someString] def main[]: # exercise the class methods c = myClass [] c.method1[] c.method2[" Testing is fun"] if __name__== "__main__": main[]

Cách thức hoạt động của kế thừa

Kế thừa là một tính năng được sử dụng trong lập trình hướng đối tượng; nó liên quan tới việc khai báo một lớp mới mà không cần thay đổi hoặc thay đổi rất ít so với lớp hiện có. Lớp mới được gọi là lớp kế thừa và lớp mà nó kế thừa được gọi là lớp cơ sở. Python hỗ trợ kế thừa; nó cũng hỗ trợ đa kế thừa. Một lớp kế thừa các thuộc tính và phương thức hành vi từ một lớp khác gọi là lớp con hoặc lớp thừa kế.

Cú pháp kế thừa trong Python

class DerivedClass[BaseClass]: body_of_derived_class

Bước 1] Chạy đoạn mã sau

# Example file for working with classes class myClass[]: def method1[self]: print["Guru99"] class childClass[myClass]: #def method1[self]: #myClass.method1[self]; #print ["childClass Method1"] def method2[self]: print["childClass method2"] def main[]: # exercise the class methods c2 = childClass[] c2.method1[] #c2.method2[] if __name__== "__main__": main[]

Lưu ý rằng trong childClass, method1 không được định nghĩa, nhưng được kế thừa từ lớp cha myClass. Đầu ra vẫn là “Guru99”.

Bước 2] Xóa dấu chú thích # ở dòng 8 & 10 sau đó chạy đoạn mã.

Bây giờ, method1 được định nghĩa trong childClass và kết quả "childClass Method1" được hiển thị chính xác.

Bước 3] Xóa dấu chú thích # ở dòng 9 sau đó chạy đoạn mã.

Bạn có thể gọi phương thức của lớp cha bằng cách sử dụng cú pháp:

ParentClassName.MethodName[self]

Trong trường hợp này, chúng ta gọi: myClass.method1[self] và giá trị Guru99 được in ra như mong muốn.

Bước 4] Xóa dấu chú thích # ở dòng 19 và chạy đoạn mã.

Phương thức 2 của lớp con được gọi và "childClass method2" được in ra như mong muốn.

Hàm khởi tạo trong Python

Hàm khởi tạo là một phương thức thuộc lớp giúp khởi tạo đối tượng với giá trị cho trước.

Nó bắt đầu bằng hai dấu gạch dưới [_]. Nó là phương thức __init __[]

Trong ví dụ dưới đây, chúng ta gán tên của người dùng bằng cách sử dụng hàm tạo.

class User: name = "" def __init__[self, name]: self.name = name def sayHello[self]: print["Welcome to Guru99, " + self.name] User1 = User["Alex"] User1.sayHello[]

Đầu ra sẽ là:

Welcome to Guru99, Alex

Ví dụ sử dụng Python 2

Các đoạn mã nguồn ở trên sử dụng Python3, nếu muốn sử dụng Python2, hãy xem đoạn mã dưới đây:

# How to define Python classes # Example file for working with classes class myClass[]: def method1[self]: print "Guru99" def method2[self,someString]: print "Software Testing:" + someString def main[]: # exercise the class methods c = myClass [] c.method1[] c.method2[" Testing is fun"] if __name__== "__main__": main[] #How Inheritance works # Example file for working with classes class myClass[]: def method1[self]: print "Guru99" class childClass[myClass]: #def method1[self]: #myClass.method1[self]; #print "childClass Method1" def method2[self]: print "childClass method2" def main[]: # exercise the class methods c2 = childClass[] c2.method1[] #c2.method2[] if __name__== "__main__": main[]

Tổng kết

"Lớp" là một nhóm logic các phương thức và dữ liệu. Lớp trong Python cung cấp tất cả các tính năng tiêu chuẩn của lập trình hướng đối tượng.

  • Cơ chế kế thừa lớp

  • Một lớp kế thừa có thể ghi đè bất kỳ phương thức nào thuộc lớp cơ sở

  • Một phương thức có thể gọi phương thức của lớp cơ sở có cùng tên

  • Lớp trong Python được định nghĩa bởi chính từ khóa “class”

  • Bên trong các lớp, bạn có thể định nghĩa các hàm hoặc phương thức và chúng là một phần thuộc lớp đó.

  • Các câu lệnh trong lớp cần được thụt lề, giống như mã nguồn trong hàm, vòng lặp, câu lệnh if, v.v.

  • Đối số self dùng để chỉ tới chính bản thân đối tượng. Self là tên được quy ước bởi Pythons để chỉ ra tham số đầu tiên của của các phương thức trong lớp.

  • Khi chạy Python, giá trị “self” sẽ được truyền vào tự động khi bạn gọi một phương thức từ đối tượng, dù cho bạn có chủ động cung cấp nó hay không.

  • Trong Python, một lớp có thể kế thừa các thuộc tính và phương thức hành vi từ một lớp khác và nó được gọi là lớp con hoặc lớp thừa kế.

Page 3

JSON là gì?

JSON là một định dạng chuẩn để trao đổi dữ liệu, được lấy cảm hứng từ JavaScript. Về cơ bản, JSON ở dạng chuỗi hoặc văn bản. JSON là viết tắt của Java Script Object Notation.

Cú pháp của JSON: JSON được viết dưới dạng cặp khóa và giá trị.

{     "Key1": "Value1",     "Key2": "Value2", }

JSON rất giống với kiểu dữ liệu từ điển trong Python. Python hỗ trợ JSON và nó có một thư viện sẵn có dưới dạng JSON.

Thư viện JSON trong Python

Các mô-đun bên ngoài 'marshal''pickle' của Python duy trì một phiên bản của thư viện JSON. Để thực hiện các thao tác liên quan đến JSON như mã hóa và giải mã trong Python, trước tiên bạn cần nạp thư viện JSON trong tệp .py của bạn,

import json

Các phương thức sau đây có sẵn trong mô-đun JSON

  Phương thức

Miêu tả

  dumps[]

Mã hóa thành các đối tượng JSON

  dump[]

Mã hóa chuỗi được ghi trong tệp

  loads[]

Giải mã chuỗi JSON

  load[]

Giải mã trong khi đọc tệp JSON


Trong bài này, bạn sẽ tìm hiểu về:

  • JSON là gì?

  • Thư viện JSON trong Python

  • Python sang JSON [Mã hóa]

  • JSON sang Python [Giải mã]

    • Giải mã tệp JSON hoặc phân tích tệp JSON trong Python

    • Mã hóa tối giản trong Python

    • Định dạng mã JSON [giúp in ra đẹp hơn]

  • Mã hóa đối tượng phức trong Python

  • Giải mã đối tượng JSON phức tạp trong Python

  • Tổng quan về lớp tuần tự hóa [serialization] JSON

  • Tổng quan về lớp giải mã [deserialization] JSON

    • Giải mã dữ liệu JSON từ URL: Ví dụ thực tế.

  • Các ngoại lệ liên quan đến thư viện JSON trong Python

  • Số vô hạn và số NaN trong Python

  • Khóa lặp lại trong Chuỗi JSON

  • CLI [Giao diện dòng lệnh] với JSON trong Python

  • Ưu điểm của JSON trong Python

  • Hạn chế trong việc triển khai JSON trong Python

  • Mã cheat

Python sang JSON [Mã hóa]

Theo mặc định, thư viện Python thực hiện dịch các đối tượng Python thành các đối tượng JSON

  Python

JSON

  Từ điển [dict]

Đối tượng

  Danh sách [list]

Mảng

  unicode

Chuỗi

  Số-int,long

số - số nguyên

  float

số - số thực

  True

True

  False

False

  None

NULL

Chuyển đổi dữ liệu Python thành JSON được gọi là thao tác mã hóa. Mã hóa được thực hiện với sự trợ giúp của phương thức từ thư viện JSON - dumps[]

Phương thức dumps[] chuyển đổi đối tượng từ điển của python thành định dạng dữ liệu dạng chuỗi JSON.

Giờ cùng xem ví dụ mã hóa đầu tiên:

import json x = { "name": "Ken", "age": 45, "married": True, "children": ["Alice","Bob"], "pets": ['Dog'], "cars": [ {"model": "Audi A1", "mpg": 15.1}, {"model": "Zeep Compass", "mpg": 18.1} ] } # sorting result in asscending order by keys: sorted_string = json.dumps[x, indent=4, sort_keys=True] print[sorted_string]

Đầu ra:

{"person": {"name": "Kenn", "sex": "male", "age": 28}}]

Hãy tạo một tệp JSON từ từ điển trên bằng cách sử dụng hàm dump[]

# here we create new data_file.json file with write mode using file i/o operation with open['json_file.json', "w"] as file_write: # write json data into file json.dump[person_data, file_write]

Đầu ra:

Không có gì để hiển thị…Bạn có thể kiểm tra tệp json_file.json được tạo ra trên hệ thống của mình.

JSON sang Python [Giải mã]

Đọc chuỗi JSON được thực hiện với sự trợ giúp của phương thức dựng sẵn loads[] & load[] của thư viện JSON trong Python. Bảng dịch dưới đây đưa ra các ví dụ về cách chuyển đổi đối tượng JSON sang đối tượng trong Python, điều này rất hữu ích trong trường hợp bạn muốn giải mã chuỗi JSON sang Python.

  JSON

Python

  Đối tượng

Từ điển [dict]

  Mảng

list [danh sách]

  Chuỗi

Unicode

  số - số nguyên [int]

số - int, long

  số -số thực [real]

float

  True

True

  False

False

  NULL

NULL

Chúng ta hãy xem một ví dụ cơ bản về việc đọc JSON trong Python với sự trợ giúp của hàm json.loads[] ,

import json # json library imported # json data string person_data = '{ "person": { "name": "Kenn", "sex": "male", "age": 28}}' # Decoding or converting JSON format in dictionary using loads[] dict_obj = json.loads[person_data] print[dict_obj] # check type of dict_obj print["Type of dict_obj", type[dict_obj]] # get human object details print["Person......", dict_obj.get['person']]

Đầu ra:

{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}} Type of dict_obj Person...... {'name': 'John', 'sex': 'male'}


Giải mã tệp JSON hoặc phân tách tệp JSON trong Python

LƯU Ý: Giải mã tệp JSON là thao tác liên quan tới nhập/xuất tệp. Tệp JSON phải tồn tại trên hệ thống ở vị trí mà bạn khai báo trong chương trình.

Ví dụ,

import json #File I/O Open function for read data from JSON File with open['X:/json_file.json'] as file_object: # store file data in object data = json.load[file_object] print[data]

Ở đây dữ liệu là một đối tượng từ điển của Python.

Đầu ra:

{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}


Mã hóa tối giản trong Python

Khi bạn cần giảm kích thước tệp JSON của mình, bạn có thể sử dụng mã hóa tối giản trong Python.

Ví dụ

import json # Create a List that contains dictionary lst = ['a', 'b', 'c',{'4': 5, '6': 7}] # separator used for compact representation of JSON. # Use of ',' to identify list items # Use of ':' to identify key and value in dictionary compact_obj = json.dumps[lst, separators=[',', ':']] print[compact_obj]

Đầu ra:

'["a", "b", "c", {"4": 5, "6": 7}]'

Định dạng mã JSON [giúp in ra dễ nhìn hơn]

  • Mục đích là để viết những đoạn mã được định dạng rõ ràng, giúp người đọc dễ hiểu. Cùng với sự trợ giúp của việc in đẹp mắt, bất cứ ai cũng có thể dễ dàng đọc hiểu đoạn mã nguồn.

  • Ví dụ:

import json dic = { 'a': 4, 'b': 5 } ''' To format the code use of indent and 4 shows number of space and use of separator is not necessary but standard way to write code of particular function. ''' formatted_obj = json.dumps[dic, indent=4, separators=[',', ': ']] print[formatted_obj]

Đầu ra:

{ "a": 4, "b": 5 }

Để hiểu rõ hơn, thay đổi thụt lề thành 40 và quan sát đầu ra

Sắp xếp mã JSON

Thuộc tính sort_keys trong đối số của hàm dumps [] sẽ sắp xếp khóa trong JSON theo thứ tự tăng dần. Đối số sort_keys là một thuộc tính kiểu Boolean. Quá trình sắp xếp được thực hiện nếu giá trị được đặt là True, và ngược lại.

Ví dụ

mport json x = { "name": "Ken", "age": 45, "married": True, "children": ["Alice", "Bob"], "pets": [ 'Dog' ], "cars": [ {"model": "Audi A1", "mpg": 15.1}, {"model": "Zeep Compass", "mpg": 18.1} ], } # sorting result in asscending order by keys: sorted_string = json.dumps[x, indent=4, sort_keys=True] print[sorted_string]

Đầu ra:

{ "age": 45, "cars": [ { "model": "Audi A1", "mpg": 15.1 }, { "model": "Zeep Compass", "mpg": 18.1 } ], "children": [ "Alice", "Bob" ], "married": true, "name": "Ken", "pets": [ "Dog" ] }

Bạn có thể thấy các khóa age, cars, children…được sắp xếp theo thứ tự tăng dần.

Mã hóa đối tượng phức trong Python

Một đối tượng phức có hai phần khác nhau đó là

Ví dụ: 3 + 2i

Trước khi thực hiện mã hóa một đối tượng phức, bạn cần kiểm tra xem liệu biến đó có phải là đối tượng phức hay không. Bạn cần tạo một hàm kiểm tra giá trị lưu trong biến bằng cách dùng hàm kiểm tra đối tượng.

Cùng viết một hàm để kiểm tra xem đối tượng có phải là phức hoặc phù hợp để mã hóa hay không.

mport json # create function to check instance is complex or not def complex_encode[object]: # check using isinstance method if isinstance[object, complex]: return [object.real, object.imag] # raised error using exception handling if object is not complex raise TypeError[repr[object] + " is not JSON serialized"] # perform json encoding by passing parameter complex_obj = json.dumps[4 + 5j, default=complex_encode] print[complex_obj]

Đầu ra:

'[4.0, 5.0]'

Giải mã đối tượng JSON phức trong Python

Để giải mã đối tượng phức trong JSON, hãy sử dụng tham số object_hook để kiểm tra chuỗi JSON có chứa đối tượng phức hay không. Ví dụ,

import json # function check JSON string contains complex object def is_complex[objct]: if '__complex__' in objct: return complex[objct['real'], objct['img']] return objct # use of json loads method with object_hook for check object complex or not complex_object =json.loads['{"__complex__": true, "real": 4, "img": 5}', object_hook = is_complex] #here we not passed complex object so it's convert into dictionary simple_object =json.loads['{"real": 6, "img": 7}', object_hook = is_complex] print["Complex_object......",complex_object] print["Without_complex_object......",simple_object]

Đầu ra:
 

Complex_object...... [4+5j] Without_complex_object...... {'real': 6, 'img': 7}

Tổng quan về lớp tuần tự hóa [Serialization] JSON

Lớp JSONEncoder được sử dụng để tuần tự hóa bất kỳ đối tượng Python nào trong khi thực hiện mã hóa. Nó chứa ba phương thức mã hóa khác nhau

  • default[o] - Được triển khai trong lớp con và trả về đối tượng tuần tự cho đối tượng o.

  • encode[o] - Giống như phương thức json.dumps [], nó trả về chuỗi JSON của cấu trúc dữ liệu Python.

  • iterencode[o] – Biểu diễn từng chuỗi một và mã hóa đối tượng o.

Với sự trợ giúp của phương thức encode[] thuộc lớp JSONEncoder, chúng ta cũng có thể mã hóa bất kỳ đối tượng Python nào.

# import JSONEncoder class from json from json.encoder import JSONEncoder colour_dict = { "colour": ["red", "yellow", "green" ]} # directly called encode method of JSON JSONEncoder[].encode[colour_dict]

Đầu ra:

'{"colour": ["red", "yellow", "green"]}'

Tổng quan về lớp giải mã [deserialization] JSON

Lớp JSONDecoder được sử dụng để giải mã tuần tự hóa bất kỳ đối tượng Python nào trong khi thực hiện giải mã. Nó chứa ba phương pháp giải mã khác nhau

  • default [o] - Được triển khai trong lớp con và trả về đối tượng giải mã.

  • decode [o] - Giống như phương thức json.loads[], nó trả về cấu trúc dữ liệu Python của chuỗi hoặc dữ liệu JSON.

  • raw_decode [o] – Biểu diễn từng từ điển Python và giải mã đối tượng o.

Với sự trợ giúp của phương thức decode [] của lớp JSONDecoder, chúng ta cũng có thể giải mã chuỗi JSON.

import json # import JSONDecoder class from json from json.decoder import JSONDecoder colour_string = '{ "colour": ["red", "yellow"]}' # directly called decode method of JSON JSONDecoder[].decode[colour_string]

Đầu ra:

{'colour': ['red', 'yellow']}

Giải mã dữ liệu JSON từ URL: Ví dụ thực tế

Chúng ta sẽ lấy dữ liệu của CityBike NYC [Hệ thống chia sẻ xe đạp] từ URL sau [ //feeds.citibikenyc.com/stations/stations.json ] và chuyển đổi sang định dạng từ điển.

Ví dụ

LƯU Ý: - Đảm bảo thư viện yêu cầu đã được cài đặt trong Python của bạn, nếu không hãy mở cửa sổ dòng lệnh hoặc CMD và gõ

[Đối với Python 3 trở lên] pip3 install requests

import json import requests # get JSON string data from CityBike NYC using web requests library json_response= requests.get["//feeds.citibikenyc.com/stations/stations.json"] # check type of json_response object print[type[json_response.text]] # load data in loads[] function of json library bike_dict = json.loads[json_response.text] #check type of news_dict print[type[bike_dict]] # now get stationBeanList key data from dict print[bike_dict['stationBeanList'][0]]

Đầu ra:

{ 'id': 487, 'stationName': 'E 20 St & FDR Drive', 'availableDocks': 24, 'totalDocks': 34, 'latitude': 40.73314259, 'longitude': -73.97573881, 'statusValue': 'In Service', 'statusKey': 1, 'availableBikes': 9, 'stAddress1': 'E 20 St & FDR Drive', 'stAddress2': '', 'city': '', }

Các ngoại lệ liên quan đến thư viện JSON trong Python

  • Lớp json.JSONDecoderError xử lý ngoại lệ liên quan đến hoạt động giải mã, và nó là một lớp con của ValueError.

  • Ngoại lệ - json.JSONDecoderError [msg, doc]

  • Các tham số của ngoại lệ là,

    • msg - Thông báo lỗi chưa được định dạng

    • doc - Tài liệu JSON được phân tích cú pháp

    • pos - chỉ số bắt đầu của doc khi nó thất bại

    • lineno – số dòng thể hiện tương ứng với pos

    • colon – số cột thể hiện tương ứng với pos

Ví dụ,

import json #File I/O Open function for read data from JSON File data = {} #Define Empty Dictionary Object try: with open['json_file_name.json'] as file_object: data = json.load[file_object] except ValueError: print["Bad JSON file format, Change JSON File"]

Số vô hạn và số NaN trong Python

Định dạng trao đổi dữ liệu JSON [RFC - Yêu cầu nhận xét] không cho phép giá trị vô hạn hoặc giá trị NaN nhưng thư viện JSON của Python không có hạn chế nào đối với việc này. Nếu JSON nhận được kiểu dữ liệu vô hạn và NanN thì nó sẽ chuyển đổi sang dạng chữ.

Ví dụ,

import json # pass float Infinite value infinite_json = json.dumps[float['inf']] # check infinite json type print[infinite_json] print[type[infinite_json]] json_nan = json.dumps[float['nan']] print[json_nan] # pass json_string as Infinity infinite = json.loads['Infinity'] print[infinite] # check type of Infinity print[type[infinite]]

Đầu ra:

Infinity NaN inf

Khóa lặp lại trong chuỗi JSON

RFC chỉ định tên khóa phải là duy nhất trong một đối tượng JSON, nhưng nó không bắt buộc. Thư viện Python JSON không đưa ra ngoại lệ đối với các đối tượng lặp lại trong JSON. Nó bỏ qua tất cả các cặp khóa-giá trị lặp lại và chỉ xem xét cặp khóa-giá trị cuối cùng trong số chúng.

Ví dụ,

import json repeat_pair = '{"a": 1, "a": 2, "a": 3}' json.loads[repeat_pair]

Đầu ra:

{'a': 3}

CLI [Giao diện dòng lệnh] với JSON trong Python

json.tool cung cấp giao diện dòng lệnh để xác thực cú pháp trong JSON. Hãy xem ví dụ về CLI

$ echo '{"name": "Kings Authur"}' | python3 -m json.tool

Đầu ra:
 

{ "name": " Kings Authur " }

Ưu điểm của JSON trong Python

  • Dễ dàng trao đổi giữa vùng chứa và giá trị [JSON sang Python và Python sang JSON]

  • Đối tượng JSON có thể đọc được

  • Được sử dụng rộng rãi trong xử lý dữ liệu.

  • Không có cùng cấu trúc dữ liệu trong một tệp.

Hạn chế trong việc triển khai JSON trong Python

  • Trong phạm vi giải mã JSON và dự đoán một số

  • Độ dài tối đa của chuỗi JSON và các mảng của JSON và các mức lồng nhau của đối tượng.

Mã Cheat

  json.dumps [person_data]

Tạo đối tượng JSON

  json.dump [person_data, file_write]

Tạo tệp JSON sử dụng nhập/xuất tệp của Python

  compact_obj = json.dumps[data, separators=[',',':']]

Tối giản đối tượng JSON bằng cách xóa ký tự khoảng trắng khỏi đối tượng JSON thông qua dấu phân cách

  formatted_obj = json.dumps [dic, indent = 4, separators = [',', ':']]

Định dạng mã JSON bằng cách sử dụng thụt lề

  sort_opes = json.dumps [x, indent = 4, sort_keys = True]

Sắp xếp khóa đối tượng JSON theo thứ tự bảng chữ cái

  complex_obj = json.dumps[4 + 5j, default=complex_encode]

Mã hóa đối tượng phức Python trong JSON

  JSONEncoder[].encode[colour_dict]

Sử dụng lớp JSONEncoder để tuần tự hóa

  json.loads[data_stringi]

Giải mã chuỗi JSON trong từ điển Python bằng hàm json.loads []

  json.loads['{"__complex__": true, "real": 4, "img": 5}', object_hook = is_complex]

Giải mã đối tượng JSON phức thành Python

  JSONDecoder[].decode[colour_string]

Sử dụng giải mã JSON trong Python

Page 4

Câu lệnh điều kiện là gì?

Câu lệnh điều kiện trong Python sẽ thực hiện việc tính toán hoặc hành động tùy thuộc vào giá trị biến ràng buộc Boolean là đúng hay sai. Câu lệnh điều kiện trong Python được thực thi bởi câu lệnh IF.

Trong bài này chúng ta sẽ học cách áp dụng câu lệnh điều kiện trong Python

  • Câu lệnh IF là gì? Sử dụng nó như thế nào?

  • Điều gì xảy ra khi “Điều kiện If” không được thỏa mãn?

  • Cách sử dụng “Điều kiện else”

  • Khi “điều kiện else” không hoạt động

  • Cách sử dụng điều kiện "elif"

  • Thực thi câu lệnh điều kiện với mã nguồn tối giản

  • Câu lệnh IF lồng nhau

  • Câu lệnh Switch

Câu lệnh IF là gì? Sử dụng nó như thế nào trong Python?

Trong Python, câu lệnh IF được sử dụng để đưa ra quyết định. Nó sẽ thực thi các câu lệnh trong thân chỉ khi điều kiện IF đưa ra là đúng.

Khi bạn muốn đảm bảo rằng điều kiện này là đúng trong khi điều kiện khác là sai, bạn có thể sử dụng “câu lệnh if”

Cú pháp:

if biểu_thức Câu_lệnh else Câu_lệnh

Cùng xem ví dụ sau:

# #Example file for working with conditional statement # def main[]: x,y =2,8 if[x < y]: st= "x is less than y" print[st] if __name__ == "__main__": main[]  
  • Dòng lệnh 5: Chúng ta định nghĩa hai biến x, y = 2, 8

  • Dòng lệnh 7: Câu lệnh if kiểm tra điều kiện x

Chủ Đề