যদিও আমার আসল উত্তরটি বিন্দুটি মিস করেছে ( ডিফল্টর্টিক্টের কারখানায় অ্যাক্সেসিং কী সমাধানের সমাধান দিয়ে এই সমস্যাটি সমাধান করার চেষ্টা করে ), আমি বর্তমান প্রশ্নের প্রকৃত সমাধানের প্রস্তাব দেওয়ার জন্য এটি পুনরায় কাজ করেছি।
এটা এখানে:
class walkableDict(dict):
def walk(self, callback):
try:
for key in self:
self[key] = callback(self[key])
except TypeError:
return False
return True
ব্যবহার:
>>> d = walkableDict({ k1: v1, k2: v2 ... })
>>> d.walk(f)
ধারণাটি হ'ল আসল ডিকটি এটিকে কাঙ্ক্ষিত কার্যকারিতা দেওয়ার জন্য সাবক্লাস করা: সমস্ত মানগুলির উপরে একটি ফাংশন "ম্যাপিং"।
প্লাস পয়েন্টটি হ'ল এই dict
অভিধানটি কলব্যাকের সাহায্যে অনুরোধে যে কোনও ডেটা রুপান্তর করার সময় মূল ডেটা সংরক্ষণ করার জন্য ব্যবহার করা যেতে পারে a
অবশ্যই, ক্লাস এবং ফাংশনটি আপনি যেভাবে চান তার নাম নির্দ্বিধায় বোধ করুন (এই উত্তরে নির্বাচিত নামটি পিএইচপি এর array_walk()
ফাংশন দ্বারা অনুপ্রাণিত )।
দ্রষ্টব্য: কার্যকারিতার জন্য try
- except
ব্লক বা return
বিবৃতি উভয়ই বাধ্যতামূলক নয়, তারা পিএইচপি-র আচরণের আরও নকল করার জন্য রয়েছে array_walk
।
dict((k, f(v)) for k, v in mydict.iteritems())
অর্থাত্ বর্গক্ষেত্র বন্ধনী ব্যতীত, এটি জেনারেটরের মাধ্যমে মধ্যবর্তী তালিকা তৈরির প্রতিরোধ করবে।