Có sự khác biệt áp dụng giữa dict.items()
và dict.iteritems()
?
Từ các tài liệu Python :
dict.items()
: Trả về một bản sao của danh sách các cặp (khóa, giá trị) của từ điển.
dict.iteritems()
: Trả về một trình vòng lặp qua các cặp (khóa, giá trị) của từ điển.
Nếu tôi chạy mã bên dưới, mỗi cái dường như trả về một tham chiếu đến cùng một đối tượng. Có sự khác biệt tinh tế mà tôi đang thiếu?
#!/usr/bin/python
d={1:'one',2:'two',3:'three'}
print 'd.items():'
for k,v in d.items():
if d[k] is v: print '\tthey are the same object'
else: print '\tthey are different'
print 'd.iteritems():'
for k,v in d.iteritems():
if d[k] is v: print '\tthey are the same object'
else: print '\tthey are different'
Đầu ra:
d.items():
they are the same object
they are the same object
they are the same object
d.iteritems():
they are the same object
they are the same object
they are the same object
d[k] is v
sẽ luôn trả về True vì python giữ một mảng các đối tượng số nguyên cho tất cả các số nguyên trong khoảng từ -5 đến 256: docs.python.org/2/c-api/int.html Khi bạn tạo một int trong phạm vi đó thực sự chỉ cần lấy lại một tham chiếu đến đối tượng hiện có: >> a = 2; b = 2 >> a is b True
Nhưng,>> a = 1234567890; b = 1234567890 >> a is b False
iteritems()
thay đổi iter()
trong Python 3? Liên kết tài liệu ở trên dường như không khớp với câu trả lời này.
items()
tạo tất cả các mục cùng một lúc và trả về một danh sách.iteritems()
trả về một trình tạo - một trình tạo là một đối tượng "tạo ra" một mục tại một thời điểm mỗi lầnnext()
được gọi trên nó.