2010-06-10 13 views
9

Tôi mới sử dụng Python.Làm cách nào để lấy khóa của một mục khi thực hiện vòng lặp FOR thông qua từ điển hoặc danh sách bằng Python?

Nói rằng tôi có một danh sách:

list = ['A','B','C','D'] 

Chìa khóa cho mỗi mục tương ứng ở đây là 0,1,2,3 - phải không?

Bây giờ tôi sẽ để lặp qua nó với một vòng lặp for ...

for item in list: 
    print item 

Đó là tuyệt vời, tôi có thể in ra danh sách của tôi.

Làm cách nào để lấy khóa ở đây? Ví dụ: có thể làm:

print key 
print item 

trên mỗi vòng lặp?

Nếu điều này là không thể với một danh sách, nơi mà các phím không được khai báo bản thân mình, là nó có thể với một từ điển?

Cảm ơn

+6

Đừng sử dụng 'list' như một tên biến. –

Trả lời

9

Câu trả lời là khác nhau cho list s và dict s.

A list không có key. Mỗi mục sẽ có một chỉ số . Bạn có thể liệt kê một danh sách như thế này:

>>> l = ['A','B','C','D'] 
>>> for index, item in enumerate(l): 
...  print index 
...  print item 
... 
0 
A 
1 
B 
2 
C 
3 
D 

tôi sử dụng ví dụ của bạn ở đây, nhưng gọi là list 'l', để tránh một cuộc đụng độ với một từ dành riêng.

Nếu bạn lặp qua một dict, bạn đang trao chìa khóa:

>>> d = {0: 'apple', 1: 'banana', 2: 'cherry', 3: 'damson', } 
>>> for k in d: 
...  print k 
...  print d[k] 
... 
0 
apple 
1 
banana 
2 
cherry 
3 
damson 
+0

Cảm ơn, vì bạn là câu trả lời đầu tiên tôi sẽ đánh dấu điều này là được chấp nhận. Điểm tốt về tên biến danh sách, đó chỉ là một ví dụ nhưng thực hành tốt để tôi nhớ rằng bất kể. Nhờ mọi người khác đã gửi câu trả lời. Tôi thực sự cảm thấy khó khăn để nắm bắt được với Python khi tôi tiến bộ, đến từ PHP. – Mike

+0

cũng cảm ơn vì đã làm rõ các thuật ngữ "khóa" và "chỉ mục". PHP có vẻ như lúng túng những thứ này tất cả thành một quả bóng lớn, hoặc ít nhất đó là cách tôi học được. – Mike

10

Bạn muốn chỉ mục, chứ không phải khóa. Đối với điều này bạn có thể sử dụng enumerate:

for index, item in enumerate(l): 
    print index 
    print item 

này được đề cập trong phần Looping Techniques trong hướng dẫn Python mà cũng bao gồm Looping trên từ điển trong khi nhận được cả chìa khóa và giá trị.

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'} 
>>> for k, v in knights.iteritems(): 
...  print k, v 
... 
gallahad the pure 
robin the brave 
+3

bạn quên liệt kê;) –

+0

Tôi muốn lập luận rằng chỉ mục là chìa khóa ... – mpen

3

Bạn nên sử dụng một cuốn từ điển, dù sao bạn có thể làm một cái gì đó như:

for index, item in enumerate(yourlist): 
    print "index:%d item:%s" % (index, item) 
Các vấn đề liên quan