Đối tượng từ điển

type PyDictObject

Kiểu con này của PyObject đại diện cho một đối tượng từ điển Python.

PyTypeObject PyDict_Type
Một phần của ABI ổn định.

Phiên bản PyTypeObject này đại diện cho loại từ điển Python. Đây là đối tượng tương tự như dict trong lớp Python.

int PyDict_Check(PyObject *p)
Thread safety: Atomic.

Trả về true nếu p là một đối tượng dict hoặc một thể hiện của một kiểu con của loại dict. Chức năng này luôn thành công.

int PyDict_CheckExact(PyObject *p)
Thread safety: Atomic.

Trả về true nếu p là một đối tượng dict, nhưng không phải là một thể hiện của kiểu con của kiểu dict. Chức năng này luôn thành công.

PyObject *PyDict_New()
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định. Thread safety: Atomic.

Trả lại một từ điển trống mới hoặc NULL nếu không thành công.

PyObject *PyDictProxy_New(PyObject *mapping)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về đối tượng types.MappingProxyType để ánh xạ thực thi hành vi chỉ đọc. Điều này thường được sử dụng để tạo chế độ xem nhằm ngăn chặn việc sửa đổi từ điển cho các loại lớp không động.

PyTypeObject PyDictProxy_Type
Một phần của ABI ổn định.

Đối tượng loại để ánh xạ các đối tượng proxy được tạo bởi PyDictProxy_New() và cho thuộc tính __dict__ chỉ đọc của nhiều loại tích hợp sẵn. Phiên bản PyDictProxy_Type cung cấp chế độ xem động, chỉ đọc của từ điển cơ bản: các thay đổi đối với từ điển cơ bản được phản ánh trong proxy nhưng bản thân proxy không hỗ trợ các hoạt động đột biến. Điều này tương ứng với types.MappingProxyType trong Python.

void PyDict_Clear(PyObject *p)
Một phần của ABI ổn định. Thread safety: Atomic.

Làm trống tất cả các cặp khóa-giá trị trong từ điển hiện có.

int PyDict_Contains(PyObject *p, PyObject *key)
Một phần của ABI ổn định. Thread safety: Safe for concurrent use on the same object.

Xác định xem từ điển p có chứa key hay không. Nếu một mục trong p khớp với key, trả về 1, nếu không thì trả về 0. Nếu có lỗi, hãy trả về -1. Điều này tương đương với biểu thức Python key in p.

Ghi chú

Hoạt động là nguyên tử trên free threading khi keystr, int, float, bool hoặc bytes.

int PyDict_ContainsString(PyObject *p, const char *key)
Thread safety: Atomic.

Điều này giống với PyDict_Contains(), nhưng key được chỉ định là chuỗi byte được mã hóa const char* UTF-8, thay vì PyObject*.

Added in version 3.13.

PyObject *PyDict_Copy(PyObject *p)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định. Thread safety: Atomic.

Trả về một từ điển mới chứa các cặp khóa-giá trị giống như p.

int PyDict_SetItem(PyObject *p, PyObject *key, PyObject *val)
Một phần của ABI ổn định. Thread safety: Safe for concurrent use on the same object.

Chèn val vào từ điển p bằng khóa key. key phải là hashable; nếu không, TypeError sẽ được nâng lên. Trả về 0 nếu thành công hoặc -1 nếu thất bại. Hàm does not này đánh cắp một tham chiếu đến val.

Ghi chú

Hoạt động là nguyên tử trên free threading khi keystr, int, float, bool hoặc bytes.

int PyDict_SetItemString(PyObject *p, const char *key, PyObject *val)
Một phần của ABI ổn định. Thread safety: Atomic.

Điều này giống với PyDict_SetItem(), nhưng key được chỉ định là chuỗi byte được mã hóa const char* UTF-8, thay vì PyObject*.

int PyDict_DelItem(PyObject *p, PyObject *key)
Một phần của ABI ổn định. Thread safety: Safe for concurrent use on the same object.

Xóa mục trong từ điển p bằng phím key. key phải là hashable; nếu không, TypeError sẽ được nâng lên. Nếu key không có trong từ điển, KeyError sẽ được nâng lên. Trả về 0 nếu thành công hoặc -1 nếu thất bại.

Ghi chú

Hoạt động là nguyên tử trên free threading khi keystr, int, float, bool hoặc bytes.

int PyDict_DelItemString(PyObject *p, const char *key)
Một phần của ABI ổn định. Thread safety: Atomic.

Điều này giống với PyDict_DelItem(), nhưng key được chỉ định là chuỗi byte được mã hóa const char* UTF-8, thay vì PyObject*.

int PyDict_GetItemRef(PyObject *p, PyObject *key, PyObject **result)
Một phần của ABI ổn định kể từ phiên bản 3.13. Thread safety: Safe for concurrent use on the same object.

Trả về một strong reference mới cho đối tượng từ từ điển p có khóa key:

  • Nếu có khóa, hãy đặt *result thành strong reference mới thành giá trị và trả về 1.

  • Nếu thiếu khóa, hãy đặt *result thành NULL và trả về 0.

  • Nếu có lỗi, hãy đưa ra một ngoại lệ và trả về -1.

Ghi chú

Hoạt động là nguyên tử trên free threading khi keystr, int, float, bool hoặc bytes.

Added in version 3.13.

Xem thêm chức năng PyObject_GetItem().

PyObject *PyDict_GetItem(PyObject *p, PyObject *key)
Giá trị trả về: Tham chiếu mượn. Một phần của ABI ổn định. Thread safety: Safe to call from multiple threads with external synchronization only.

Trả về borrowed reference cho đối tượng từ từ điển p có khóa key. Trả về NULL nếu thiếu khóa key without đặt một ngoại lệ.

Ghi chú

Các ngoại lệ xảy ra khi lệnh này gọi phương thức __hash__()__eq__() đều bị bỏ qua một cách âm thầm. Thay vào đó, hãy ưu tiên chức năng PyDict_GetItemWithError().

Ghi chú

Trong free-threaded build, borrowed reference được trả về có thể trở nên không hợp lệ nếu một luồng khác sửa đổi từ điển đồng thời. Thích PyDict_GetItemRef(), trả về strong reference.

Thay đổi trong phiên bản 3.10: Gọi API này mà không có attached thread state đã được cho phép vì lý do lịch sử. Nó không còn được phép.

PyObject *PyDict_GetItemWithError(PyObject *p, PyObject *key)
Giá trị trả về: Tham chiếu mượn. Một phần của ABI ổn định. Thread safety: Safe to call from multiple threads with external synchronization only.

Biến thể của PyDict_GetItem() không loại bỏ ngoại lệ. Trả về NULL with một ngoại lệ được đặt nếu xảy ra ngoại lệ. Trả về NULL without một ngoại lệ được đặt nếu không có khóa.

Ghi chú

Trong free-threaded build, borrowed reference được trả về có thể trở nên không hợp lệ nếu một luồng khác sửa đổi từ điển đồng thời. Thích PyDict_GetItemRef(), trả về strong reference.

PyObject *PyDict_GetItemString(PyObject *p, const char *key)
Giá trị trả về: Tham chiếu mượn. Một phần của ABI ổn định. Thread safety: Safe to call from multiple threads with external synchronization only.

Điều này giống với PyDict_GetItem(), nhưng key được chỉ định là chuỗi byte được mã hóa const char* UTF-8, thay vì PyObject*.

Ghi chú

Các ngoại lệ xảy ra khi lệnh này gọi phương thức __hash__()__eq__() hoặc khi tạo đối tượng str tạm thời đều bị bỏ qua âm thầm. Thay vào đó, hãy ưu tiên sử dụng chức năng PyDict_GetItemWithError() với PyUnicode_FromString() key của riêng bạn.

Ghi chú

Trong free-threaded build, borrowed reference được trả về có thể trở nên không hợp lệ nếu một luồng khác sửa đổi từ điển đồng thời. Thích PyDict_GetItemStringRef(), trả về strong reference.

int PyDict_GetItemStringRef(PyObject *p, const char *key, PyObject **result)
Một phần của ABI ổn định kể từ phiên bản 3.13. Thread safety: Atomic.

Tương tự như PyDict_GetItemRef(), nhưng key được chỉ định là chuỗi byte được mã hóa const char* UTF-8, thay vì PyObject*.

Added in version 3.13.

PyObject *PyDict_SetDefault(PyObject *p, PyObject *key, PyObject *defaultobj)
Giá trị trả về: Tham chiếu mượn. Thread safety: Safe to call from multiple threads with external synchronization only.

Điều này giống như dict.setdefault() cấp Python. Nếu có, nó trả về giá trị tương ứng với key từ từ điển p. Nếu khóa không có trong lệnh, nó sẽ được chèn với giá trị defaultobjdefaultobj được trả về. Hàm này chỉ đánh giá hàm băm của key một lần, thay vì đánh giá nó một cách độc lập để tra cứu và chèn.

Added in version 3.4.

Ghi chú

Trong free-threaded build, borrowed reference được trả về có thể trở nên không hợp lệ nếu một luồng khác sửa đổi từ điển đồng thời. Thích PyDict_SetDefaultRef(), trả về strong reference.

int PyDict_SetDefaultRef(PyObject *p, PyObject *key, PyObject *default_value, PyObject **result)
Thread safety: Safe for concurrent use on the same object.

Chèn default_value vào từ điển p với khóa key nếu khóa này chưa có trong từ điển. Nếu result không phải là NULL thì *result được đặt thành strong reference thành default_value, nếu khóa không có hoặc giá trị hiện tại, nếu key đã có trong từ điển. Trả về 1 nếu có khóa và default_value không được chèn hoặc 0 nếu không có khóa và default_value đã được chèn. Nếu thất bại, trả về -1, đặt ngoại lệ và đặt *result thành NULL.

Để rõ ràng: nếu bạn có một tham chiếu mạnh đến default_value trước khi gọi hàm này, thì sau khi nó trả về, bạn giữ một tham chiếu mạnh đến cả default_value*result (nếu không phải là NULL). Chúng có thể tham chiếu đến cùng một đối tượng: trong trường hợp đó bạn giữ hai tham chiếu riêng biệt tới nó.

Ghi chú

Hoạt động là nguyên tử trên free threading khi keystr, int, float, bool hoặc bytes.

Added in version 3.13.

int PyDict_Pop(PyObject *p, PyObject *key, PyObject **result)
Thread safety: Safe for concurrent use on the same object.

Xóa key khỏi từ điển p và tùy ý trả về giá trị đã xóa. Không nâng KeyError nếu thiếu key.

  • Nếu có khóa, hãy đặt *result thành tham chiếu mới cho giá trị đã xóa nếu result không phải là NULL và trả về 1.

  • Nếu thiếu khóa, hãy đặt *result thành NULL nếu result không phải là NULL và trả về 0.

  • Nếu có lỗi, hãy đưa ra một ngoại lệ và trả về -1.

Tương tự như dict.pop(), nhưng không có giá trị mặc định và không tăng KeyError nếu thiếu key.

Ghi chú

Hoạt động là nguyên tử trên free threading khi keystr, int, float, bool hoặc bytes.

Added in version 3.13.

int PyDict_PopString(PyObject *p, const char *key, PyObject **result)
Thread safety: Atomic.

Tương tự như PyDict_Pop(), nhưng key được chỉ định là chuỗi byte được mã hóa const char* UTF-8, thay vì PyObject*.

Added in version 3.13.

PyObject *PyDict_Items(PyObject *p)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định. Thread safety: Atomic.

Trả về PyListObject chứa tất cả các mục từ từ điển.

PyObject *PyDict_Keys(PyObject *p)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định. Thread safety: Atomic.

Trả về PyListObject chứa tất cả các khóa từ từ điển.

PyObject *PyDict_Values(PyObject *p)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định. Thread safety: Atomic.

Trả về PyListObject chứa tất cả các giá trị từ từ điển p.

Py_ssize_t PyDict_Size(PyObject *p)
Một phần của ABI ổn định. Thread safety: Atomic.

Trả về số mục trong từ điển. Điều này tương đương với len(p) trên từ điển.

Py_ssize_t PyDict_GET_SIZE(PyObject *p)
Thread safety: Atomic.

Tương tự như PyDict_Size() nhưng không có tính năng kiểm tra lỗi.

int PyDict_Next(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue)
Một phần của ABI ổn định. Thread safety: Safe to call from multiple threads with external synchronization only.

Lặp lại tất cả các cặp khóa-giá trị trong từ điển p. Py_ssize_t được tham chiếu bởi ppos phải được khởi tạo thành 0 trước lệnh gọi đầu tiên tới hàm này để bắt đầu lặp lại; hàm trả về true cho từng cặp trong từ điển và trả về false khi tất cả các cặp đã được báo cáo. Các tham số pkeypvalue phải trỏ đến các biến PyObject* sẽ được điền lần lượt bằng từng khóa và giá trị hoặc có thể là NULL. Bất kỳ tài liệu tham khảo nào được trả lại thông qua chúng đều được mượn. ppos không nên thay đổi trong quá trình lặp lại. Giá trị của nó biểu thị các độ lệch trong cấu trúc từ điển nội bộ và do cấu trúc thưa thớt nên các độ lệch không liên tiếp.

Ví dụ:

Giá trị PyObject *key, *;
Py_ssize_t pos = 0;

while (PyDict_Next(self->dict, &pos, &key, &value)) {
    /* làm điều gì đó thú vị với các giá trị... */
    ...
}

Từ điển p không được thay đổi trong quá trình lặp lại. Việc sửa đổi giá trị của các khóa khi bạn lặp lại từ điển là an toàn, nhưng chỉ với điều kiện là bộ khóa không thay đổi. Ví dụ:

Giá trị PyObject *key, *;
Py_ssize_t pos = 0;

while (PyDict_Next(self->dict, &pos, &key, &value)) {
    dài i = PyLong_AsLong(giá trị);
    if (i == -1 && PyErr_Occurred()) {
        trả về -1;
    }
    PyObject *o = PyLong_FromLong(i + 1);
    nếu (o == NULL)
        trả về -1;
    if (PyDict_SetItem(self->dict, key, o) < 0) {
        Py_DECREF(o);
        trả về -1;
    }
    Py_DECREF(o);
}

Chức năng này không an toàn theo luồng trong bản dựng free-threaded nếu không có đồng bộ hóa bên ngoài. Bạn có thể sử dụng Py_BEGIN_CRITICAL_SECTION để khóa từ điển trong khi lặp lại nó

Py_BEGIN_CRITICAL_SECTION(tự->dict);
while (PyDict_Next(self->dict, &pos, &key, &value)) {
    ...
}
Py_END_CRITICAL_SECTION();

Ghi chú

Trên bản dựng có luồng tự do, chức năng này có thể được sử dụng một cách an toàn bên trong phần quan trọng. Tuy nhiên, các tham chiếu được trả về cho pkeypvalueborrowed và chỉ hợp lệ khi phần quan trọng được giữ. Nếu bạn cần sử dụng các đối tượng này bên ngoài phần quan trọng hoặc khi phần quan trọng có thể bị tạm dừng, hãy tạo strong reference (ví dụ: sử dụng Py_NewRef()).

int PyDict_Merge(PyObject *a, PyObject *b, int override)
Một phần của ABI ổn định. Thread safety: Safe for concurrent use on the same object.

Lặp lại đối tượng ánh xạ b thêm các cặp khóa-giá trị vào từ điển a. b có thể là một từ điển hoặc bất kỳ đối tượng nào hỗ trợ PyMapping_Keys()PyObject_GetItem(). Nếu override là đúng, các cặp hiện có trong a sẽ được thay thế nếu tìm thấy khóa trùng khớp trong b, nếu không thì các cặp sẽ chỉ được thêm nếu không có khóa khớp trong a. Trả về 0 nếu thành công hoặc -1 nếu có ngoại lệ xảy ra.

Ghi chú

Trong free-threaded build, khi bdict (với trình lặp tiêu chuẩn), cả ab đều bị khóa trong suốt thời gian hoạt động. Khi b là ánh xạ không chính tả, chỉ a bị khóa; b có thể được sửa đổi đồng thời bởi một luồng khác.

int PyDict_Update(PyObject *a, PyObject *b)
Một phần của ABI ổn định. Thread safety: Safe for concurrent use on the same object.

Điều này giống với PyDict_Merge(a, b, 1) trong C và tương tự như a.update(b) trong Python ngoại trừ việc PyDict_Update() không quay trở lại việc lặp lại một chuỗi các cặp giá trị khóa nếu đối số thứ hai không có thuộc tính "khóa". Trả về 0 nếu thành công hoặc -1 nếu có ngoại lệ.

Ghi chú

Trong free-threaded build, khi bdict (với trình lặp tiêu chuẩn), cả ab đều bị khóa trong suốt thời gian hoạt động. Khi b là ánh xạ không chính tả, chỉ a bị khóa; b có thể được sửa đổi đồng thời bởi một luồng khác.

int PyDict_MergeFromSeq2(PyObject *a, PyObject *seq2, int override)
Một phần của ABI ổn định. Thread safety: Safe for concurrent use on the same object.

Cập nhật hoặc hợp nhất vào từ điển a, từ các cặp khóa-giá trị trong seq2. seq2 phải là một đối tượng có thể lặp tạo ra các đối tượng có thể lặp có độ dài 2, được xem dưới dạng cặp khóa-giá trị. Trong trường hợp khóa trùng lặp, người cuối cùng sẽ thắng nếu override đúng, nếu không thì người đầu tiên sẽ thắng. Trả về 0 nếu thành công hoặc -1 nếu có ngoại lệ. Python tương đương (ngoại trừ giá trị trả về):

def PyDict_MergeFromSeq2(a, seq2, ghi đè):
    đối với khóa, giá trị trong seq2:
        nếu ghi đè hoặc khóa không  trong:
            a[khóa] = giá trị

Ghi chú

Trong bản dựng free-threaded, chỉ có a bị khóa. Việc lặp lại seq2 không được đồng bộ hóa; seq2 có thể được sửa đổi đồng thời bởi một luồng khác.

int PyDict_AddWatcher(PyDict_WatchCallback callback)
Thread safety: Safe to call from multiple threads with external synchronization only.

Đăng ký callback làm người theo dõi từ điển. Trả về một id số nguyên không âm phải được chuyển cho các cuộc gọi trong tương lai tới PyDict_Watch(). Trong trường hợp có lỗi (ví dụ: không còn ID người theo dõi), hãy trả về -1 và đặt ngoại lệ.

Ghi chú

Chức năng này không được đồng bộ hóa nội bộ. Trong bản dựng free-threaded, người gọi phải đảm bảo không có cuộc gọi đồng thời nào tới PyDict_AddWatcher() hoặc PyDict_ClearWatcher() đang diễn ra.

Added in version 3.12.

int PyDict_ClearWatcher(int watcher_id)
Thread safety: Safe to call from multiple threads with external synchronization only.

Trình theo dõi rõ ràng được xác định bởi watcher_id trước đó được trả về từ PyDict_AddWatcher(). Trả về 0 nếu thành công, -1 nếu có lỗi (ví dụ: nếu watcher_id đã cho chưa bao giờ được đăng ký.)

Ghi chú

Chức năng này không được đồng bộ hóa nội bộ. Trong bản dựng free-threaded, người gọi phải đảm bảo không có cuộc gọi đồng thời nào tới PyDict_AddWatcher() hoặc PyDict_ClearWatcher() đang diễn ra.

Added in version 3.12.

int PyDict_Watch(int watcher_id, PyObject *dict)
Thread safety: Safe to call without external synchronization on distinct objects.

Đánh dấu từ điển dict là đã xem. Cuộc gọi lại được watcher_id cấp cho PyDict_AddWatcher() sẽ được gọi khi dict được sửa đổi hoặc hủy phân bổ. Trả về 0 nếu thành công hoặc -1 nếu có lỗi.

Added in version 3.12.

int PyDict_Unwatch(int watcher_id, PyObject *dict)
Thread safety: Safe to call without external synchronization on distinct objects.

Đánh dấu từ điển dict là không còn xem. Cuộc gọi lại được watcher_id cấp cho PyDict_AddWatcher() sẽ không còn được gọi khi dict được sửa đổi hoặc hủy phân bổ. Lệnh này trước đây phải được người theo dõi này theo dõi. Trả về 0 nếu thành công hoặc -1 nếu có lỗi.

Added in version 3.12.

type PyDict_WatchEvent

Bảng liệt kê các sự kiện có thể có của trình theo dõi từ điển: PyDict_EVENT_ADDED, PyDict_EVENT_MODIFIED, PyDict_EVENT_DELETED, PyDict_EVENT_CLONED, PyDict_EVENT_CLEARED hoặc PyDict_EVENT_DEALLOCATED.

Added in version 3.12.

typedef int (*PyDict_WatchCallback)(PyDict_WatchEvent event, PyObject *dict, PyObject *key, PyObject *new_value)

Loại chức năng gọi lại của trình theo dõi dict.

Nếu eventPyDict_EVENT_CLEARED hoặc PyDict_EVENT_DEALLOCATED thì cả keynew_value đều sẽ là NULL. Nếu eventPyDict_EVENT_ADDED hoặc PyDict_EVENT_MODIFIED thì new_value sẽ là giá trị mới cho key. Nếu eventPyDict_EVENT_DELETED, key sẽ bị xóa khỏi từ điển và new_value sẽ là NULL.

PyDict_EVENT_CLONED xảy ra khi dict trước đó trống và một lệnh khác được hợp nhất vào đó. Để duy trì hiệu quả của hoạt động này, các sự kiện PyDict_EVENT_ADDED trên mỗi phím không được phát hành trong trường hợp này; thay vào đó, một PyDict_EVENT_CLONED duy nhất được phát hành và key sẽ là từ điển nguồn.

Cuộc gọi lại có thể kiểm tra nhưng không được sửa đổi dict; làm như vậy có thể có những tác động không thể đoán trước, bao gồm cả đệ quy vô hạn. Không kích hoạt việc thực thi mã Python trong lệnh gọi lại, vì nó có thể sửa đổi lệnh chính tả như một tác dụng phụ.

Nếu eventPyDict_EVENT_DEALLOCATED, việc lấy một tham chiếu mới trong lệnh gọi lại tới từ điển sắp bị phá hủy sẽ phục hồi nó và ngăn không cho nó được giải phóng vào lúc này. Khi đối tượng được phục hồi bị phá hủy sau đó, mọi lệnh gọi lại của người theo dõi đang hoạt động tại thời điểm đó sẽ được gọi lại.

Lệnh gọi lại diễn ra trước khi sửa đổi được thông báo đối với dict diễn ra, do đó có thể kiểm tra trạng thái trước đó của dict.

Nếu lệnh gọi lại đặt ngoại lệ, nó phải trả về -1; ngoại lệ này sẽ được in dưới dạng ngoại lệ không thể xử lý được bằng PyErr_WriteUnraisable(). Nếu không nó sẽ trả về 0.

Có thể đã có một ngoại lệ đang chờ xử lý được đặt khi truy cập lệnh gọi lại. Trong trường hợp này, lệnh gọi lại sẽ trả về 0 với cùng một ngoại lệ vẫn được đặt. Điều này có nghĩa là lệnh gọi lại không được gọi bất kỳ API nào khác có thể đặt ngoại lệ trừ khi nó lưu và xóa trạng thái ngoại lệ trước, đồng thời khôi phục nó trước khi quay lại.

Added in version 3.12.

Đối tượng xem từ điển

int PyDictViewSet_Check(PyObject *op)

Trả về true nếu op là dạng xem của một tập hợp bên trong từ điển. Điều này hiện tương đương với PyDictKeys_Check(op) || PyDictItems_Check(op). Chức năng này luôn thành công.

PyTypeObject PyDictKeys_Type
Một phần của ABI ổn định.

Nhập đối tượng để xem các khóa từ điển. Trong Python, đây là loại đối tượng được trả về bởi dict.keys().

int PyDictKeys_Check(PyObject *op)

Trả về true nếu op là một phiên bản của chế độ xem khóa từ điển. Chức năng này luôn thành công.

PyTypeObject PyDictValues_Type
Một phần của ABI ổn định.

Nhập đối tượng để xem các giá trị từ điển. Trong Python, đây là loại đối tượng được trả về bởi dict.values().

int PyDictValues_Check(PyObject *op)

Trả về true nếu op là một phiên bản của chế độ xem giá trị từ điển. Chức năng này luôn thành công.

PyTypeObject PyDictItems_Type
Một phần của ABI ổn định.

Nhập đối tượng để xem các mục từ điển. Trong Python, đây là loại đối tượng được trả về bởi dict.items().

int PyDictItems_Check(PyObject *op)

Trả về true nếu op là một phiên bản của chế độ xem mục từ điển. Chức năng này luôn thành công.

Từ điển đặt hàng

C API của Python cung cấp giao diện cho collections.OrderedDict từ C. Vì Python 3.7, các từ điển được sắp xếp theo mặc định, do đó thường ít cần đến các hàm này; thích PyDict* hơn nếu có thể.

PyTypeObject PyODict_Type

Nhập đối tượng cho từ điển được sắp xếp. Đây là đối tượng tương tự như collections.OrderedDict trong lớp Python.

int PyODict_Check(PyObject *od)

Trả về true nếu od là một đối tượng từ điển có thứ tự hoặc một thể hiện của một kiểu con của loại OrderedDict. Chức năng này luôn thành công.

int PyODict_CheckExact(PyObject *od)

Trả về true nếu od là một đối tượng từ điển có thứ tự, nhưng không phải là phiên bản của kiểu con của loại OrderedDict. Chức năng này luôn thành công.

PyTypeObject PyODictKeys_Type

Tương tự như PyDictKeys_Type cho các từ điển có thứ tự.

PyTypeObject PyODictValues_Type

Tương tự như PyDictValues_Type cho các từ điển có thứ tự.

PyTypeObject PyODictItems_Type

Tương tự như PyDictItems_Type cho các từ điển có thứ tự.

PyObject *PyODict_New(void)

Trả lại một từ điển mới có thứ tự trống hoặc NULL nếu không thành công.

Điều này tương tự với PyDict_New().

int PyODict_SetItem(PyObject *od, PyObject *key, PyObject *value)

Chèn value vào từ điển có thứ tự od với khóa key. Trả về 0 nếu thành công hoặc -1 với ngoại lệ được đặt nếu thất bại.

Điều này tương tự với PyDict_SetItem().

int PyODict_DelItem(PyObject *od, PyObject *key)

Xóa mục trong từ điển được sắp xếp od bằng phím key. Trả về 0 nếu thành công hoặc -1 với ngoại lệ được đặt nếu thất bại.

Điều này tương tự với PyDict_DelItem().

Đây là các bí danh soft deprecated cho API PyDict:

PyODict

PyDict

PyODict_GetItem(od, key)

PyDict_GetItem()

PyODict_GetItemWithError(od, key)

PyDict_GetItemWithError()

PyODict_GetItemString(od, key)

PyDict_GetItemString()

PyODict_Contains(od, key)

PyDict_Contains()

PyODict_Size(od)

PyDict_Size()

PyODict_SIZE(od)

PyDict_GET_SIZE()