Hướng dẫn này sẽ giới thiệu cách in đẹp một từ điển bằng Python. In đẹp có nghĩa là trình bày một cái gì đó ở định dạng hoặc phong cách dễ đọc hơn
Sử dụng pprint() để in đẹp từ điển bằng Python
[{'Age': '23', 'Country': 'USA', 'Name': 'John'}, {'Age': '44', 'Country': 'Spain', 'Name': 'Jose'}, {'Age': '29', 'Country': 'UK', 'Name': 'Anne'}, {'Age': '35', 'Country': 'Japan', 'Name': 'Lee'}] 0 là một mô-đun Python cung cấp khả năng in đẹp các loại dữ liệu Python để dễ đọc hơn. Mô-đun này cũng hỗ trợ từ điển in đẹp
Trong mô-đun [{'Age': '23', 'Country': 'USA', 'Name': 'John'}, {'Age': '44', 'Country': 'Spain', 'Name': 'Jose'}, {'Age': '29', 'Country': 'UK', 'Name': 'Anne'}, {'Age': '35', 'Country': 'Japan', 'Name': 'Lee'}] 0 có một hàm có cùng tên pprint(), đây là hàm được sử dụng để in đẹp chuỗi hoặc đối tượng đã cho
Đầu tiên, khai báo một mảng từ điển. Sau đó, in nó đẹp bằng chức năng [{'Age': '23', 'Country': 'USA', 'Name': 'John'}, {'Age': '44', 'Country': 'Spain', 'Name': 'Jose'}, {'Age': '29', 'Country': 'UK', 'Name': 'Anne'}, {'Age': '35', 'Country': 'Japan', 'Name': 'Lee'}] 3
import pprint dct_arr = [ {'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'} ] pprint.pprint(dct_arr)
đầu ra
[{'Age': '23', 'Country': 'USA', 'Name': 'John'}, {'Age': '44', 'Country': 'Spain', 'Name': 'Jose'}, {'Age': '29', 'Country': 'UK', 'Name': 'Anne'}, {'Age': '35', 'Country': 'Japan', 'Name': 'Lee'}]
Để so sánh, bên dưới là đầu ra của một câu lệnh [{'Age': '23', 'Country': 'USA', 'Name': 'John'}, {'Age': '44', 'Country': 'Spain', 'Name': 'Jose'}, {'Age': '29', 'Country': 'UK', 'Name': 'Anne'}, {'Age': '35', 'Country': 'Japan', 'Name': 'Lee'}] 4 bình thường
[{'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'}]
Đầu ra pprint() chắc chắn dễ đọc hơn. Những gì nó làm là ngắt từng phần tử từ điển trong mảng ngay sau dấu phẩy đồng thời sắp xếp các giá trị của từ điển theo khóa
Nếu bạn không muốn các cặp khóa-giá trị của mình được sắp xếp theo khóa, thì bạn nên đặt tham số [{'Age': '23', 'Country': 'USA', 'Name': 'John'}, {'Age': '44', 'Country': 'Spain', 'Name': 'Jose'}, {'Age': '29', 'Country': 'UK', 'Name': 'Anne'}, {'Age': '35', 'Country': 'Japan', 'Name': 'Lee'}] 6 thành [{'Age': '23', 'Country': 'USA', 'Name': 'John'}, {'Age': '44', 'Country': 'Spain', 'Name': 'Jose'}, {'Age': '29', 'Country': 'UK', 'Name': 'Anne'}, {'Age': '35', 'Country': 'Japan', 'Name': 'Lee'}] 7 trong hàm pprint()
Một điều khác cần lưu ý là pprint() sẽ không in đẹp các đối tượng lồng nhau, bao gồm cả từ điển lồng nhau. Vì vậy, nếu bạn muốn các giá trị của mình được lồng vào nhau, thì đây cũng không phải là giải pháp cho điều đó
Sử dụng [{'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'}] 0 để in đẹp từ điển bằng Python
Trong mô-đun Python [{'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'}] 1, có một hàm tên là [{'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'}] 2, chuyển đổi một đối tượng Python thành một chuỗi JSON. Ngoài việc chuyển đổi, nó cũng định dạng từ điển thành định dạng JSON đẹp mắt, vì vậy đây có thể là một cách khả thi để in từ điển đẹp bằng cách chuyển đổi nó thành JSON trước tiên
Hàm [{'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'}] 2 nhận 3 tham số dùng để in đẹp. đối tượng để chuyển đổi, một giá trị boolean [{'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'}] 4, xác định xem các mục nhập có được sắp xếp theo khóa hay không và [{'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'}] 5, chỉ định số lượng khoảng trắng để thụt lề
Chúng tôi sẽ sử dụng cùng một từ điển ví dụ như trên cho giải pháp này. [{'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'}] 4 được đặt thành [{'Age': '23', 'Country': 'USA', 'Name': 'John'}, {'Age': '44', 'Country': 'Spain', 'Name': 'Jose'}, {'Age': '29', 'Country': 'UK', 'Name': 'Anne'}, {'Age': '35', 'Country': 'Japan', 'Name': 'Lee'}] 7 để tắt tính năng sắp xếp và [{'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'}] 5 được đặt thành [{'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'}] 9 khoảng trắng
import json dct_arr = [ {'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'} ] print(json.dumps(dct_arr, sort_keys=False, indent=4))
đầu ra
[ { "Age": "23", "Country": "USA", "Name": "John" }, { "Age": "44", "Country": "Spain", "Name": "Jose" }, { "Age": "29", "Country": "UK", "Name": "Anne" }, { "Age": "35", "Country": "Japan", "Name": "Lee" } ]
So với đầu ra của hàm pprint(), cái này dễ đọc hơn nhiều, mặc dù tốn nhiều dòng hơn vì nó ở định dạng JSON đẹp
Điều gì sẽ xảy ra nếu các giá trị đã cho có một từ điển lồng nhau bên trong chúng?
import json dct_arr = [ {'Name': 'John', 'Age': '23', 'Residence': {'Country':'USA', 'City': 'New York'}}, {'Name': 'Jose', 'Age': '44', 'Residence': {'Country':'Spain', 'City': 'Madrid'}}, {'Name': 'Anne', 'Age': '29', 'Residence': {'Country':'UK', 'City': 'England'}}, {'Name': 'Lee', 'Age': '35', 'Residence': {'Country':'Japan', 'City': 'Osaka'}} ] print(json.dumps(dct_arr, sort_keys=False, indent=4))
đầu ra
[ { "Name": "John", "Age": "23", "Residence": { "Country": "USA", "City": "New York" } }, { "Name": "Jose", "Age": "44", "Residence": { "Country": "Spain", "City": "Madrid" } }, { "Name": "Anne", "Age": "29", "Residence": { "Country": "UK", "City": "England" } }, { "Name": "Lee", "Age": "35", "Residence": { "Country": "Japan", "City": "Osaka" } } ]
Rõ ràng, các từ điển lồng nhau JSON đẹp mắt được hỗ trợ bằng cách sử dụng import json dct_arr = [ {'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'} ] print(json.dumps(dct_arr, sort_keys=False, indent=4)) 1 và về mặt trực quan, nó trông rõ ràng và rất dễ đọc ngay cả khi nó được lồng vào nhau
Sử dụng import json dct_arr = [ {'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'} ] print(json.dumps(dct_arr, sort_keys=False, indent=4)) 2 để in đẹp từ điển bằng Python
Một cách khác để in đẹp từ điển là sử dụng hàm import json dct_arr = [ {'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'} ] print(json.dumps(dct_arr, sort_keys=False, indent=4)) 3 của mô-đun import json dct_arr = [ {'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'} ] print(json.dumps(dct_arr, sort_keys=False, indent=4)) 4. Nó phục vụ cùng mục đích như hàm [{'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'}] 0 nhưng ở định dạng YAML thay vì JSON
Trước hết, hãy cài đặt mô-đun YAML bằng cách sử dụng import json dct_arr = [ {'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'} ] print(json.dumps(dct_arr, sort_keys=False, indent=4)) 6
hoặc nếu sử dụng Python 3 và import json dct_arr = [ {'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'} ] print(json.dumps(dct_arr, sort_keys=False, indent=4)) 7
Hãy thử với cùng một ví dụ lồng nhau được sử dụng trong ví dụ JSON
Lưu ý tham số mới import json dct_arr = [ {'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'} ] print(json.dumps(dct_arr, sort_keys=False, indent=4)) 8, xác định xem kiểu đầu ra của kết xuất nên là import json dct_arr = [ {'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'} ] print(json.dumps(dct_arr, sort_keys=False, indent=4)) 9 hay [ { "Age": "23", "Country": "USA", "Name": "John" }, { "Age": "44", "Country": "Spain", "Name": "Jose" }, { "Age": "29", "Country": "UK", "Name": "Anne" }, { "Age": "35", "Country": "Japan", "Name": "Lee" } ] 0. Trong trường hợp này, đầu ra phải ở dạng khối vì chúng tôi muốn nó có thể đọc được, vì vậy hãy đặt tham số này thành [{'Age': '23', 'Country': 'USA', 'Name': 'John'}, {'Age': '44', 'Country': 'Spain', 'Name': 'Jose'}, {'Age': '29', 'Country': 'UK', 'Name': 'Anne'}, {'Age': '35', 'Country': 'Japan', 'Name': 'Lee'}] 7
import yaml dct_arr = [ {'Name': 'John', 'Age': '23', 'Residence': {'Country':'USA', 'City': 'New York'}}, {'Name': 'Jose', 'Age': '44', 'Residence': {'Country':'Spain', 'City': 'Madrid'}}, {'Name': 'Anne', 'Age': '29', 'Residence': {'Country':'UK', 'City': 'England'}}, {'Name': 'Lee', 'Age': '35', 'Residence': {'Country':'Japan', 'City': 'Osaka'}} ] print(yaml.dump(dct_arr, sort_keys=False, default_flow_style=False))
đầu ra
- Name: John Age: '23' Residence: Country: USA City: New York - Name: Jose Age: '44' Residence: Country: Spain City: Madrid - Name: Anne Age: '29' Residence: Country: UK City: England - Name: Lee Age: '35' Residence: Country: Japan City: Osaka
Tóm lại, việc hàm YAML import json dct_arr = [ {'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'} ] print(json.dumps(dct_arr, sort_keys=False, indent=4)) 3 có dễ đọc hơn JSON [{'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'}] 2 hay không là tùy thuộc vào chủ quan. Tùy thuộc vào sở thích cá nhân hoặc loại đầu ra được yêu cầu. Cả hai chức năng đánh bại đầu ra của [{'Age': '23', 'Country': 'USA', 'Name': 'John'}, {'Age': '44', 'Country': 'Spain', 'Name': 'Jose'}, {'Age': '29', 'Country': 'UK', 'Name': 'Anne'}, {'Age': '35', 'Country': 'Japan', 'Name': 'Lee'}] 0 khi nói đến các cấu trúc dữ liệu phức tạp hơn hoặc các đối tượng lồng nhau