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 ánLờ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
What will be the output of the following Python code?
def foo():
try:
return 1
finally:
return 2
k = foo()
print(k)Có lời giảiCâu hỏiCopying and pasting a Python for loop with a blank line into the standard Python shell will always execute without errors.Có lời giảiCâu hỏiWhat is the result of sorted([-4, 1, -2, 3], key=abs, reverse=True) ?Có lời giảiCâu hỏiCả 22 câu của chủ đề22 câu
Xuất hiện trong 1 bộ đề
Đi tiếp từ đây