มีความแตกต่างที่เกี่ยวข้องระหว่างdict.items()
และdict.iteritems()
?
จากPython docs :
dict.items()
: ส่งคืนสำเนาของรายการคู่ (คีย์, ค่า) ของพจนานุกรม
dict.iteritems()
: ส่งคืนตัววนซ้ำรอบคู่ (คีย์, ค่า) ของพจนานุกรม
หากฉันเรียกใช้รหัสด้านล่างดูเหมือนว่าแต่ละคนจะส่งคืนการอ้างอิงไปยังวัตถุเดียวกัน มีความแตกต่างเล็กน้อยที่ฉันขาดหายไปไหม
#!/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'
เอาท์พุท:
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
จะคืนค่าเป็น True เสมอเนื่องจากไพ ธ อนเก็บอาเรย์ของวัตถุจำนวนเต็มสำหรับจำนวนเต็มทั้งหมดระหว่าง -5 ถึง 256: docs.python.org/2/c-api/int.htmlเมื่อคุณสร้าง int ในช่วงนั้น อันที่จริงเพิ่งได้รับการอ้างอิงไปยังวัตถุที่มีอยู่: >> a = 2; b = 2 >> a is b True
แต่,>> a = 1234567890; b = 1234567890 >> a is b False
iteritems()
เปลี่ยนแปลงiter()
ในหลาม 3 หรือไม่? ลิงค์เอกสารด้านบนดูเหมือนจะไม่ตรงกับคำตอบนี้
items()
สร้างรายการทั้งหมดในครั้งเดียวและส่งกลับรายการiteritems()
ส่งกลับเครื่องกำเนิดไฟฟ้า - เครื่องกำเนิดไฟฟ้าเป็นวัตถุที่ "สร้าง" หนึ่งรายการในแต่ละครั้งที่next()
มีการเรียกมัน