2012-01-19 34 views
6

Tôi đang làm việc trên hệ điều hành Windows 7 trong một trình bao Python (3.2.2). Cố gắng tìm hiểu các ngôn ngữ tôi đã nhập và đã trở lại như sau:Đối tượng 'bộ' Python không hỗ trợ lập chỉ mục

>>> cast = { 
    'cleese', 
    'Palin', 
    'Jones', 
    'Idle' 
    } 
>>> print (cast[1]) 
Traceback (most recent call last): 
    File "<pyshell#12>", line 1, in <module> 
    print (cast[1]) 
TypeError: 'set' object does not support indexing 
>>> cast.append('Gilliam') 
Traceback (most recent call last): 
    File "<pyshell#13>", line 1, in <module> 
    cast.append('Gilliam') 
AttributeError: 'set' object has no attribute 'append' 

==========================

Có vẻ như vấn đề không nằm trong mã hóa, nhưng với cách chương trình được cài đặt.

Tôi đã cài đặt, chưa được cài đặt và cài đặt lại, nhưng sự phục hồi là như nhau. Tôi có một cái gì đó tôi cần phải làm trước khi vỏ của Python đã sẵn sàng để được sử dụng?

hans

+0

phải là những gì bạn đã được đăng ở đây mã hoàn chỉnh? Dường như bạn đang xác định một dict và sau đó cố gắng truy cập nó bằng cách sử dụng ký hiệu danh sách. Bạn sẽ thấy một lỗi cú pháp ở đây. Thử cast = ["cleese", "Palin", "Jones", "Idle"]. Lưu ý '[' thay vì '{' – timc

Trả lời

18

Python có vẻ hoạt động tốt. Vấn đề là set không hỗ trợ lập chỉ mục hoặc phụ thêm. Thay vào đó, hãy thử sử dụng danh sách ([] thay vì {}). Thay vì phụ thêm, setadd nhưng tính năng lập chỉ mục đã hết.

Và Python có sự giúp đỡ hữu ích,

>>> help(set) 

in rất nhiều thông tin về set s.

4

Dường như bạn đang cố xác định danh sách. Tuy nhiên, bạn đã sử dụng dấu ngoặc nhọn {} thay vì ngoặc vuông []. Người thông dịch coi nó như một từ điển chứ không phải là một danh sách, vì vậy việc lập chỉ mục và chắp thêm() không hoạt động ở đây.

+2

Như đã nêu trong câu trả lời cũ, thông dịch viên coi 'cast' là tập hợp chứ không phải từ điển. Không có cặp khóa/giá trị nào để tạo thành một dict. – alexwlchan

0

Chỉ cần đề cập ở đây, set's' không hỗ trợ lập chỉ mục, vì chúng dựa trên băm, nó rất giống với dictionaries cũng không hỗ trợ lập chỉ mục. Bạn chỉ có thể truy cập dict bởi số key.

Nếu bạn cần lập chỉ mục, bạn có thể chuyển đổi thiết lập của bạn như sau:

convertedToList = list(set(1,2,3)) 
Các vấn đề liên quan