Rumah > pembangunan bahagian belakang > Tutorial Python > Adakah Kamus Python 3.6 Mengekalkan Tertib Sisipan dan Bagaimana Ini Dilaksanakan?

Adakah Kamus Python 3.6 Mengekalkan Tertib Sisipan dan Bagaimana Ini Dilaksanakan?

Patricia Arquette
Lepaskan: 2024-12-30 09:23:20
asal
866 orang telah melayarinya

Do Python 3.6  Dictionaries Maintain Insertion Order and How Is This Implemented?

Adakah Kamus Disusun dalam Python 3.6 ?

Dalam Python versi 3.6 dan lebih baru, kamus mempamerkan susunan sisipan, bermakna mereka mengekalkan susunan yang pasangan nilai kunci ditambah. Tingkah laku ini tidak dijamin merentas semua pelaksanaan Python dan hanya digunakan untuk penterjemah CPython.

Peningkatan Kecekapan Pelaksanaan Kamus Python 3.6

Pelaksanaan kamus baharu dalam Python 3.6 menggunakan dua tatasusunan untuk mengekalkan kedua-dua tertib sisipan dan cincang yang cekap carian.

  • dk_entry: Mengandungi entri (pasangan nilai-kunci) dalam susunan sisipan.
  • dk_indices: Menyimpan indeks yang sepadan kepada setiap entri dalam dk_entry, bertindak sebagai cincang jadual.

Pendekatan ini memanfaatkan saiz tatasusunan integer (dk_indices) yang lebih kecil berbanding dengan tatasusunan entri nilai kunci yang jarang digunakan sebelum ini (dk_entry), menghasilkan jejak memori yang lebih padat. Tatasusunan jarang yang sebelum ini diperuntukkan untuk menampung saiz tetap 2/3 ruang kosong untuk pengoptimuman prestasi tidak lagi diperlukan.

Visualisasi Struktur Data

Kamus contoh:

d = {'timmy': 'red', 'barry': 'green', 'guido': 'blue'}
Salin selepas log masuk

Data Lama Struktur:

entries = [['--', '--', '--'],
           [-8522787127447073495, 'barry', 'green'],
           ['--', '--', '--'],
           ['--', '--', '--'],
           ['--', '--', '--'],
           [-9092791511155847987, 'timmy', 'red'],
           ['--', '--', '--'],
           [-6480567542315338377, 'guido', 'blue']]
Salin selepas log masuk

Struktur Data Baharu:

indices =  [None, 1, None, None, None, 0, None, 2]
entries =  [[-9092791511155847987, 'timmy', 'red'],
            [-8522787127447073495, 'barry', 'green'],
            [-6480567542315338377, 'guido', 'blue']]
Salin selepas log masuk

Seperti yang digambarkan, struktur baharu memisahkan indeks dan entri, membolehkan peruntukan memori yang lebih cekap dan carian jadual cincang yang lebih pantas disebabkan saiz indeks yang lebih kecil tatasusunan.

Kesimpulan

Pelaksanaan kamus yang dipertingkatkan dalam Python 3.6 secara berkesan mengekalkan susunan sisipan sambil mengoptimumkan penggunaan memori melalui penggunaan tatasusunan kemasukan dan indeks yang berasingan. Pengoptimuman ini menghasilkan perwakilan dan pengurusan kamus yang lebih cekap, terutamanya dalam senario dengan kekangan ingatan atau apabila kamus besar diproses.

Atas ialah kandungan terperinci Adakah Kamus Python 3.6 Mengekalkan Tertib Sisipan dan Bagaimana Ini Dilaksanakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan