Why are lists not allowed as dictionary keys in Python, as per the document?

4 phương ánCó giải thích

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "They can be changed in place, disrupting hashing". Dictionary trong Python là bảng băm: vị trí lưu một cặp được tính từ hash(key), nên khoá phải hashable, tức giá trị băm không được đổi suốt thời gian khoá nằm trong bảng. List là kiểu khả biến (mutable), append hay gán phần tử làm nội dung đổi tại chỗ, nếu băm theo nội dung thì khoá sẽ lạc khỏi ô của nó; vì thế list không có hàm băm và dùng làm khoá sẽ ném TypeError: unhashable type: 'list', còn tuple bất biến thì dùng được. "They are too large for efficient hashing" sai vì một list rỗng cũng bị cấm, trong khi chuỗi rất dài vẫn băm được. "They are slower to access than strings" sai vì tốc độ truy cập không phải tiêu chí chọn khoá. "They are restricted to numerical values" sai vì list chứa được phần tử thuộc bất kỳ kiểu nào.

Cùng phần 4

Xuất hiện trong 1 bộ đề