2013-06-06 33 views

Trả lời

21

Bạn có thể sử dụng enumerate() function:

for count, (key, value) in enumerate(my_dict.iteritems(), 1): 
    print key, value, count 

enumerate() hiệu quả bổ sung thêm một số vào iterator bạn đang lặp kết thúc. Trong ví dụ trên, tôi yêu cầu enumerate() bắt đầu đếm tại 1 để khớp với ví dụ của bạn; mặc định là bắt đầu từ 0.

Demo:

>>> somedict = {'foo': 'bar', 42: 'Life, the Universe and Everything', 'monty': 'python'} 
>>> for count, (key, value) in enumerate(somedict.iteritems(), 1): 
...  print key, value, count 
... 
42 Life, the Universe and Everything 1 
foo bar 2 
monty python 3 
+0

Cảm ơn Tôi đã không biết rằng u có thể liệt kê ngay cả trên một container như từ điển mà không có người đặt hàng. Tôi đã sử dụng liệt kê trong danh sách trước đây. – vkaul11

+0

một khác biệt nhỏ - mã ban đầu bắt đầu từ 1 (do đó sử dụng 'liệt kê (mục, 1)') –

+0

@ vkaul11: có một thứ tự, nó không chỉ là thứ tự bạn nên dựa vào vì nó phụ thuộc vào việc chèn và lịch sử xóa của từ điển. :-) Nói cách khác, phương thức '.ititems()' sẽ trả về các phần tử theo thứ tự * tùy ý. 'enumerate()' không quan tâm; nó chỉ đếm các phần tử khá giống với mã của bạn, thêm 1 vào bộ đếm nội bộ mỗi lần. –

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