2010-09-22 31 views
41

Có thể sử dụng chuỗi như chỉ mục trong một mảng trong python không?Mảng Python với chỉ số chuỗi

Ví dụ:

myArray = [] 
myArray["john"] = "johns value" 
myArray["jeff"] = "jeffs value" 
print myArray["john"] 
+6

những gì bạn đang hiển thị là __lists__, không phải mảng. Hãy gọi tôi là người khổng lồ. – aaronasterling

Trả lời

89

Những gì bạn muốn được gọi là một associative array. Trong trăn, chúng được gọi là dictionaries.

Từ điển đôi khi được tìm thấy bằng các ngôn ngữ khác là "ký ức liên kết" hoặc "mảng kết hợp". Không giống như trình tự, được lập chỉ mục theo một dải số, các từ điển được lập chỉ mục bằng các khóa, có thể là bất kỳ loại bất biến nào; chuỗi và số có thể luôn là chìa khóa.

myDict = {} 
myDict["john"] = "johns value" 
myDict["jeff"] = "jeffs value" 

cách Alternative để tạo dict trên:

myDict = {"john": "johns value", "jeff": "jeffs value"} 

giá trị Truy cập:

print myDict["jeff"] # => "jeffs value" 

Bắt các phím (bằng Python v2):

print myDict.keys() # => ["john", "jeff"] 

Nếu bạn muốn tìm hiểu về nội bộ từ điển python, tôi khuyên bạn nên trình bày video này ~ 25 phút: https://www.youtube.com/watch?v=C4Kc8xzcA68. Nó được gọi là "Từ điển hùng mạnh".

+4

Ví dụ tuyệt vời. Một cái gì đó luôn luôn tốt để biết về Từ điển trong Python là, như [MYYN] (http://stackoverflow.com/users/89391/the-myyn) cho biết, chìa khóa phải là một loại bất biến. Nếu bạn cần phân loại các giá trị bằng các khóa "nhiều", bạn phải sử dụng kiểu Tuple bằng Python. – Sean

+1

Về mặt kỹ thuật, khóa [phải được _hashable_] (http://docs.python.org/reference/datamodel.html#object.__hash__), không nhất thiết phải bất biến, mặc dù giá trị được trả về bởi hàm 'băm' không nên thay đổi miễn là đối tượng được sử dụng làm khóa từ điển. Nếu có, hãy chuẩn bị cho chương trình của bạn gặp sự cố hoặc hành vi sai trái theo cách kỳ lạ. –

+0

Trên url Từ điển Mighty không hoạt động, hãy tìm tại https://www.youtube.com/watch?v=C4Kc8xzcA68 –

4

Thậm chí tốt hơn, hãy thử một OrderedDict (giả sử bạn muốn một cái gì đó giống như danh sách). Gần hơn một danh sách hơn một dict thông thường vì các phím có một thứ tự giống như các phần tử danh sách có một thứ tự. Với một dict thường xuyên, các phím có một thứ tự tùy ý.

Lưu ý rằng điều này có sẵn trong Python 3 và 2.7. Nếu bạn muốn sử dụng với phiên bản Python cũ hơn, bạn có thể tìm thấy các mô-đun có thể cài đặt để thực hiện điều đó.

+0

Lưu ý rằng cần một OrderedDict ít phổ biến hơn là cần một dict. –

Các vấn đề liên quan