আপনি পাইথনের সমস্ত জায়গায় এর itemsপরিবর্তে ব্যবহার করতে পারবেন না iteritems। উদাহরণস্বরূপ, নিম্নলিখিত কোড:
class C:
def __init__(self, a):
self.a = a
def __iter__(self):
return self.a.iteritems()
>>> c = C(dict(a=1, b=2, c=3))
>>> [v for v in c]
[('a', 1), ('c', 3), ('b', 2)]
আপনি ব্যবহার করলে ব্রেক হবে items:
class D:
def __init__(self, a):
self.a = a
def __iter__(self):
return self.a.items()
>>> d = D(dict(a=1, b=2, c=3))
>>> [v for v in d]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __iter__ returned non-iterator of type 'list'
পাইথন 3-এ পাওয়া ভিউইটেমগুলির ক্ষেত্রেও এটি একই ।
এছাড়াও, যেহেতু আইটেমগুলি অভিধানের (key, value)জোড়ার তালিকার একটি অনুলিপি প্রদান করে , এটি কম দক্ষ, যদি না আপনি যেভাবে একটি অনুলিপি তৈরি করতে চান।
পাইথন 2 এ, iteritemsপুনরাবৃত্তির জন্য ব্যবহার করা ভাল । 2to3সরঞ্জাম দিয়ে এটি প্রতিস্থাপন করতে পারেন itemsযদি আপনি কখনও পাইথন 3 আপগ্রেড করার সিদ্ধান্ত নেন।
iteritemsএটি একটি পুনরাবৃত্তিকারী, যার কারণে এটি এত কার্যকর। আমি প্রায় কোনও তালিকা হিসাবে তালিকা হিসাবে পুনরাবৃত্তি করতে চাই না। সুতরাং পাইথন 2 এবং 3 উভয়ের সাথে সামঞ্জস্যপূর্ণ এমন কোনও জেনারেটরের সাথে অভিধানের মাধ্যমে পুনরাবৃত্তি করার সঠিক উপায় কী?