Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Kamus Python Saya Nampak Tersusun Walaupun Tidak Tersusun?

Mengapa Kamus Python Saya Nampak Tersusun Walaupun Tidak Tersusun?

Barbara Streisand
Barbara Streisandasal
2024-11-28 01:43:11710semak imbas

Why Does My Python Dictionary Appear Ordered Despite Being Unordered?

Penyusunan Kamus dalam Python

Mengapakah kamus Python seolah-olah dipesan apabila ia sepatutnya tidak tertib?

Pertimbangkan kamus berikut:

propertyList = {
    "id":           "int",
    "name":         "char(40)",

    "team":         "int",
    "realOwner":    "int",

    "x":            "int",
    "y":            "int",

    "description":  "char(255)",

    "port":         "bool",
    "secret":       "bool",
    "dead":         "bool",
    "nomadic":      "bool",

    "population":   "int",
    "slaves":       "int",
}

Apabila mencetak kamus dengan "n".join(myDict), susunan yang tidak dijangka diperhatikan:

name
nomadic
dead
port
realOwner
secret
slaves
team
y
x
Population
id
description

Walaupun kamus Python memang tidak tertib, susunan yang sama dihasilkan secara konsisten.

Pelaksanaan Dasar

Dalam versi Python yang lebih lama, kamus telah dilaksanakan sebagai jadual cincang. Jadual cincang menggunakan fungsi untuk memetakan kunci ke lokasi tertentu dalam tatasusunan, menghasilkan susunan yang nampaknya sewenang-wenang tetapi konsisten.

Pelaksanaan Dict Tertib

Python telah menyemak semulanya pelaksanaan dict untuk mengekalkan susunan sisipan. Jaminan ini berkesan dari Python 3.7 dan seterusnya. Oleh itu, pelaksanaan kamus tidak lagi berdasarkan jadual cincang semata-mata, walaupun jadual cincang masih digunakan dalam pembinaannya.

Atas ialah kandungan terperinci Mengapa Kamus Python Saya Nampak Tersusun Walaupun Tidak Tersusun?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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