Python membagi kamus menjadi beberapa baris

Modul ini menyediakan kemampuan untuk "mencetak cantik" struktur data Python sewenang-wenang dalam bentuk yang dapat digunakan sebagai input ke juru bahasa. Jika struktur yang diformat menyertakan objek yang bukan merupakan tipe dasar Python, representasinya mungkin tidak dapat dimuat. Ini mungkin terjadi jika objek seperti file, soket, atau kelas disertakan, serta banyak objek lain yang tidak dapat direpresentasikan sebagai literal Python

Representasi yang diformat menyimpan objek pada satu baris jika bisa, dan memecahnya menjadi beberapa baris jika tidak sesuai dengan lebar yang diizinkan. Bangun objek secara eksplisit jika Anda perlu menyesuaikan batasan lebar

Kamus diurutkan berdasarkan kunci sebelum tampilan dihitung

Berubah di versi 3. 9. Menambahkan dukungan untuk pencetakan cantik.

Berubah di versi 3. 10. Menambahkan dukungan untuk pencetakan cantik.

Modul mendefinisikan satu kelas

kelas cetakan. PrettyPrinter(inden=1 , lebar=80 , kedalaman=Tidak ada , aliran=Tidak ada , * , ringkas=Salah , sort_dicts=Benar , underscore_numbers=Salah)

Bangun sebuah instance. Konstruktor ini memahami beberapa parameter kata kunci

stream (default

>>> import pprint
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
>>> stuff.insert(0, stuff)
>>> pprint.pprint(stuff)
[<Recursion on list with id=...>,
 'spam',
 'eggs',
 'lumberjack',
 'knights',
 'ni']
_5) adalah output yang akan ditulis dengan memanggil metode
>>> import pprint
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
>>> stuff.insert(0, stuff)
>>> pprint.pprint(stuff)
[<Recursion on list with id=...>,
 'spam',
 'eggs',
 'lumberjack',
 'knights',
 'ni']
6. Jika aliran dan
>>> import pprint
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
>>> stuff.insert(0, stuff)
>>> pprint.pprint(stuff)
[<Recursion on list with id=...>,
 'spam',
 'eggs',
 'lumberjack',
 'knights',
 'ni']
5 adalah
>>> import pprint
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
>>> stuff.insert(0, stuff)
>>> pprint.pprint(stuff)
[<Recursion on list with id=...>,
 'spam',
 'eggs',
 'lumberjack',
 'knights',
 'ni']
8, maka diam-diam kembali

Nilai lain mengonfigurasi cara penyarangan struktur data kompleks ditampilkan

indent (default 1) menentukan jumlah indentasi yang ditambahkan untuk setiap level bersarang

kedalaman mengontrol jumlah tingkat bersarang yang dapat dicetak; . Secara default, tidak ada batasan pada kedalaman objek yang sedang diformat

lebar (default 80) menentukan jumlah karakter maksimum yang diinginkan per baris dalam output. Jika struktur tidak dapat diformat dalam batasan lebar, upaya terbaik akan dilakukan

kompak memengaruhi cara urutan panjang (daftar, tupel, set, dll) diformat. Jika kompak salah (default) maka setiap item urutan akan diformat pada baris terpisah. Jika kompak benar, item sebanyak yang sesuai dengan lebar akan diformat pada setiap baris keluaran

Jika sort_dicts benar (default), kamus akan diformat dengan kuncinya diurutkan, jika tidak, kamus akan ditampilkan dalam urutan penyisipan

Jika underscore_numbers benar, bilangan bulat akan diformat dengan karakter

>>> pprint.isreadable(stuff)
False
1 untuk pemisah ribuan, jika tidak, garis bawah tidak ditampilkan (default)

Berubah di versi 3. 4. Menambahkan parameter kompak.

Berubah di versi 3. 8. Menambahkan parameter sort_dicts.

Berubah di versi 3. 10. Menambahkan parameter underscore_numbers.

Berubah di versi 3. 11. Tidak lagi mencoba menulis ke

>>> import pprint
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
>>> stuff.insert(0, stuff)
>>> pprint.pprint(stuff)
[<Recursion on list with id=...>,
 'spam',
 'eggs',
 'lumberjack',
 'knights',
 'ni']
5 jika
>>> import pprint
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
>>> stuff.insert(0, stuff)
>>> pprint.pprint(stuff)
[<Recursion on list with id=...>,
 'spam',
 'eggs',
 'lumberjack',
 'knights',
 'ni']
8.

>>> import pprint
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
>>> stuff.insert(0, stuff[:])
>>> pp = pprint.PrettyPrinter(indent=4)
>>> pp.pprint(stuff)
[   ['spam', 'eggs', 'lumberjack', 'knights', 'ni'],
    'spam',
    'eggs',
    'lumberjack',
    'knights',
    'ni']
>>> pp = pprint.PrettyPrinter(width=41, compact=True)
>>> pp.pprint(stuff)
[['spam', 'eggs', 'lumberjack',
  'knights', 'ni'],
 'spam', 'eggs', 'lumberjack', 'knights',
 'ni']
>>> tup = ('spam', ('eggs', ('lumberjack', ('knights', ('ni', ('dead',
.. ('parrot', ('fresh fruit',))))))))
>>> pp = pprint.PrettyPrinter(depth=6)
>>> pp.pprint(tup)
('spam', ('eggs', ('lumberjack', ('knights', ('ni', ('dead', (...)))))))
_

cetakan. pformat(objek , inden=1 , lebar=80 , kedalaman=Tidak ada , * , ringkas=Salah , sort_dicts=Benar , underscore_numbers=Salah)

Mengembalikan representasi objek yang diformat sebagai string. indent, width, depth, compact, sort_dicts, dan underscore_numbers diteruskan ke konstruktor sebagai parameter pemformatan dan artinya seperti yang dijelaskan dalam dokumentasinya di atas

cetakan. pp(objek , *args , sort_dicts=Salah , **kwargs)

Mencetak representasi objek yang diformat diikuti oleh baris baru. Jika sort_dicts salah (default), kamus akan ditampilkan dengan kuncinya dalam urutan penyisipan, jika tidak, kunci dict akan diurutkan. args dan kwargs akan diteruskan sebagai parameter pemformatan

Baru di versi 3. 8

cetakan. pprint(objek , aliran=Tidak ada , inden=1 , lebar=80 , kedalaman=Tidak ada , * , ringkas=Salah , sort_dicts=Benar , underscore_numbers=Salah)

Mencetak representasi objek yang diformat pada aliran, diikuti oleh baris baru. Jika aliran adalah

>>> import pprint
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
>>> stuff.insert(0, stuff)
>>> pprint.pprint(stuff)
[<Recursion on list with id=...>,
 'spam',
 'eggs',
 'lumberjack',
 'knights',
 'ni']
8,
>>> import pprint
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
>>> stuff.insert(0, stuff)
>>> pprint.pprint(stuff)
[<Recursion on list with id=...>,
 'spam',
 'eggs',
 'lumberjack',
 'knights',
 'ni']
5 digunakan. Ini dapat digunakan dalam interpreter interaktif alih-alih fungsi untuk memeriksa nilai (Anda bahkan dapat menetapkan ulang
>>> pprint.isreadable(stuff)
False
9 untuk digunakan dalam lingkup)

Aliran parameter konfigurasi, indent, width, depth, compact, sort_dicts, dan underscore_numbers diteruskan ke konstruktor dan artinya seperti yang dijelaskan dalam dokumentasinya di atas

>>> import pprint
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
>>> stuff.insert(0, stuff)
>>> pprint.pprint(stuff)
[<Recursion on list with id=...>,
 'spam',
 'eggs',
 'lumberjack',
 'knights',
 'ni']

cetakan. dapat dibaca(objek)

Tentukan apakah representasi objek yang diformat "dapat dibaca", atau dapat digunakan untuk merekonstruksi nilai menggunakan. Ini selalu mengembalikan

>>> pprint.saferepr(stuff)
"[<Recursion on list with id=...>, 'spam', 'eggs', 'lumberjack', 'knights', 'ni']"
_2 untuk objek rekursif

>>> pprint.isreadable(stuff)
False
_

cetakan. berulang(objek)

Tentukan apakah objek memerlukan representasi rekursif

Satu lagi fungsi pendukung juga ditentukan

cetakan. saferepr(objek)

Mengembalikan representasi string dari objek, terlindung dari struktur data rekursif. Jika representasi objek memaparkan entri rekursif, referensi rekursif akan direpresentasikan sebagai

>>> pprint.saferepr(stuff)
"[<Recursion on list with id=...>, 'spam', 'eggs', 'lumberjack', 'knights', 'ni']"
3. Representasi tidak diformat sebaliknya

>>> pprint.saferepr(stuff)
"[<Recursion on list with id=...>, 'spam', 'eggs', 'lumberjack', 'knights', 'ni']"

Objek PrettyPrinter

contoh memiliki metode berikut

PrettyPrinter. pformat(objek)

Mengembalikan representasi objek yang diformat. Ini memperhitungkan opsi yang diteruskan ke konstruktor

PrettyPrinter. pprint(objek)

Cetak representasi objek yang diformat pada aliran yang dikonfigurasi, diikuti oleh baris baru

Metode berikut menyediakan implementasi untuk fungsi yang sesuai dengan nama yang sama. Menggunakan metode ini pada instans sedikit lebih efisien karena objek baru tidak perlu dibuat

PrettyPrinter. dapat dibaca(objek)

Tentukan apakah representasi objek yang diformat "dapat dibaca", atau dapat digunakan untuk merekonstruksi nilai menggunakan. Perhatikan bahwa ini mengembalikan

>>> pprint.saferepr(stuff)
"[<Recursion on list with id=...>, 'spam', 'eggs', 'lumberjack', 'knights', 'ni']"
2 untuk objek rekursif. Jika parameter kedalaman disetel dan objek lebih dalam dari yang diizinkan, ini mengembalikan
>>> pprint.saferepr(stuff)
"[<Recursion on list with id=...>, 'spam', 'eggs', 'lumberjack', 'knights', 'ni']"
2

PrettyPrinter. berulang(objek)

Tentukan apakah objek memerlukan representasi rekursif

Metode ini disediakan sebagai pengait untuk mengizinkan subkelas memodifikasi cara objek diubah menjadi string. Implementasi default menggunakan internal implementasi

PrettyPrinter. format(objek , konteks, maxlevels, level)

Mengembalikan tiga nilai. versi objek yang diformat sebagai string, bendera yang menunjukkan apakah hasilnya dapat dibaca, dan bendera yang menunjukkan apakah rekursi terdeteksi. Argumen pertama adalah objek yang akan disajikan. Yang kedua adalah kamus yang berisi objek yang merupakan bagian dari konteks presentasi saat ini (kontainer langsung dan tidak langsung untuk objek yang mempengaruhi presentasi) sebagai kuncinya; . Panggilan rekursif ke metode harus menambahkan entri tambahan untuk wadah ke kamus ini. Argumen ketiga, maxlevels, memberikan batas yang diminta untuk rekursi; . Argumen ini harus diteruskan tanpa modifikasi ke panggilan rekursif. Argumen keempat, level, memberikan level saat ini;

Contoh

Untuk mendemonstrasikan beberapa penggunaan fungsi dan parameternya, mari ambil informasi tentang proyek dari PyPI

>>> import json
>>> import pprint
>>> from urllib.request import urlopen
>>> with urlopen('https://pypi.org/pypi/sampleproject/json') as resp:
..     project_info = json.load(resp)['info']

Dalam bentuk dasarnya, menunjukkan keseluruhan objek

>>> pprint.pprint(project_info)
{'author': 'The Python Packaging Authority',
 'author_email': '[email protected]',
 'bugtrack_url': None,
 'classifiers': ['Development Status :: 3 - Alpha',
                 'Intended Audience :: Developers',
                 'License :: OSI Approved :: MIT License',
                 'Programming Language :: Python :: 2',
                 'Programming Language :: Python :: 2.6',
                 'Programming Language :: Python :: 2.7',
                 'Programming Language :: Python :: 3',
                 'Programming Language :: Python :: 3.2',
                 'Programming Language :: Python :: 3.3',
                 'Programming Language :: Python :: 3.4',
                 'Topic :: Software Development :: Build Tools'],
 'description': 'A sample Python project\n'
                '=======================\n'
                '\n'
                'This is the description file for the project.\n'
                '\n'
                'The file should use UTF-8 encoding and be written using '
                'ReStructured Text. It\n'
                'will be used to generate the project webpage on PyPI, and '
                'should be written for\n'
                'that purpose.\n'
                '\n'
                'Typical contents for this file would include an overview of '
                'the project, basic\n'
                'usage examples, etc. Generally, including the project '
                'changelog in here is not\n'
                'a good idea, although a simple "What\'s New" section for the '
                'most recent version\n'
                'may be appropriate.',
 'description_content_type': None,
 'docs_url': None,
 'download_url': 'UNKNOWN',
 'downloads': {'last_day': -1, 'last_month': -1, 'last_week': -1},
 'home_page': 'https://github.com/pypa/sampleproject',
 'keywords': 'sample setuptools development',
 'license': 'MIT',
 'maintainer': None,
 'maintainer_email': None,
 'name': 'sampleproject',
 'package_url': 'https://pypi.org/project/sampleproject/',
 'platform': 'UNKNOWN',
 'project_url': 'https://pypi.org/project/sampleproject/',
 'project_urls': {'Download': 'UNKNOWN',
                  'Homepage': 'https://github.com/pypa/sampleproject'},
 'release_url': 'https://pypi.org/project/sampleproject/1.2.0/',
 'requires_dist': None,
 'requires_python': None,
 'summary': 'A sample Python project',
 'version': '1.2.0'}

Hasilnya dapat dibatasi hingga kedalaman tertentu (elipsis digunakan untuk konten yang lebih dalam)

>>> pprint.pprint(project_info, depth=1)
{'author': 'The Python Packaging Authority',
 'author_email': '[email protected]',
 'bugtrack_url': None,
 'classifiers': [...],
 'description': 'A sample Python project\n'
                '=======================\n'
                '\n'
                'This is the description file for the project.\n'
                '\n'
                'The file should use UTF-8 encoding and be written using '
                'ReStructured Text. It\n'
                'will be used to generate the project webpage on PyPI, and '
                'should be written for\n'
                'that purpose.\n'
                '\n'
                'Typical contents for this file would include an overview of '
                'the project, basic\n'
                'usage examples, etc. Generally, including the project '
                'changelog in here is not\n'
                'a good idea, although a simple "What\'s New" section for the '
                'most recent version\n'
                'may be appropriate.',
 'description_content_type': None,
 'docs_url': None,
 'download_url': 'UNKNOWN',
 'downloads': {...},
 'home_page': 'https://github.com/pypa/sampleproject',
 'keywords': 'sample setuptools development',
 'license': 'MIT',
 'maintainer': None,
 'maintainer_email': None,
 'name': 'sampleproject',
 'package_url': 'https://pypi.org/project/sampleproject/',
 'platform': 'UNKNOWN',
 'project_url': 'https://pypi.org/project/sampleproject/',
 'project_urls': {...},
 'release_url': 'https://pypi.org/project/sampleproject/1.2.0/',
 'requires_dist': None,
 'requires_python': None,
 'summary': 'A sample Python project',
 'version': '1.2.0'}

Selain itu, lebar karakter maksimum dapat disarankan. Jika objek panjang tidak dapat dipisah, lebar yang ditentukan akan terlampaui

Bagaimana Anda membuat kamus dengan banyak baris di Python?

Berikut adalah beberapa yang dapat saya pikirkan. .
mydict = { "key1". 1, "kunci2". 2, "kunci3". 3, }
mydict = { "key1". 1, "kunci2". 2, "kunci3". 3, }
mydict = { "key1". 1, "kunci2". 2, "kunci3". 3, }

Bagaimana Anda memutuskan garis dalam kamus dengan Python?

Untuk memecah ekspresi menjadi beberapa baris, bungkus ekspresi di sekitar kumpulan tanda kurung dan pisahkan sesuai keinginan Anda . Jika ekspresi sudah berada dalam kumpulan tanda kurung, tanda kurung siku, atau kurung kurawal, Anda dapat membaginya menjadi beberapa baris. Ini berlaku misalnya untuk daftar, tupel, dan kamus.

Apa itu kamus indentasi Python?

Lekukan mengacu pada spasi di awal baris kode . Di mana dalam bahasa pemrograman lain lekukan dalam kode hanya untuk keterbacaan, lekukan dalam Python sangat penting. Python menggunakan lekukan untuk menunjukkan blok kode.

Bagaimana cara membongkar kamus di kamus lain dengan Python?

Cara termudah untuk menggabungkan dua kamus dengan python adalah dengan menggunakan operator unpacking(**) . Dengan menerapkan operator "**" ke kamus, itu memperluas kontennya menjadi kumpulan pasangan nilai kunci.