Page 41 - Python Simple
P. 41
5. Cấu trúc dữ liệu http://www.vithon.org/tutorial/2.5/node7.html
dùng làm khóa nếu nó chỉ chứa chuỗi, số, hoặc tuple; nếu tuple chứa bất kỳ một
đối tượng khả biến nào thì nó không thể được dùng làm khóa. Bạn không thể
dùng danh sách làm khóa, vì danh sách có thể được thay đổi ngay tại chỗ với
phép gán vào chỉ mục, phép gán miếng cắt, hoặc các phương thức khác như
append() và extend().
Dễ nhất là nghĩ về từ điển như một tập hợp không thứ tự của các bộ khóa: giá trị
, với điều kiện là khóa phải là duy nhất (trong cùng một từ điển). Một cặp ngoặc
nhọn tạo một từ điển rỗng: {}. Đặt một loạt các cụm khóa:giá trị phân biệt bởi
dấu phẩy vào trong ngoặc nhọn tạo nên các cặp khóa:giá trị ban đầu cho từ
điển; đây cũng là cách mà từ điển được xuất ra.
Công việc chính của từ điển là chứa một giá trị vào một khóa nào đó và lấy lại
giá trị từ khóa đó. Cũng có thể xóa một cặp khóa:giá trị với del. Nếu bạn chứa
vào một khóa đã có sẵn, giá trị cũ sẽ bị mất. Lấy giá trị từ một khóa không tồn
tại sẽ gây nên lỗi.
Phương thức keys() của đối tượng từ điển trả về một danh sách các khóa đã
được dùng trong từ điển, theo một thứ tự bất kỳ (nếu bạn muốn chúng được sắp
xếp, chỉ cần áp dụng phương thức sort() vào danh sách các khóa). Để kiểm tra
xem một khóa có trong từ điển hay không, có thể dùng phương thức has_key()
hoặc từ khóa in .
Đây là một ví dụ nhỏ về cách dùng từ điển:
>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'sape': 4139, 'guido': 4127, 'jack': 4098}
>>> tel['jack']
4098
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
{'guido': 4127, 'irv': 4127, 'jack': 4098}
>>> tel.keys()
['guido', 'irv', 'jack']
>>> tel.has_key('guido')
True
>>> 'guido' in tel
True
Phương thức dict() dùng để tạo từ điển trực tiếp từ các danh sách các cụm
khóa-giá trị chứa trong tuple. Khi các cụm có một mẫu nào đó, việc gộp danh
sách có thể chỉ ra ngắn gọn danh sách khóa-giá trị.
>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'jack': 4098, 'guido': 4127}
>>> dict([(x, x**2) for x in (2, 4, 6)]) # use a list comprehension
{2: 4, 4: 16, 6: 36}
8 of 11 08/31/2011 07:39 AM