• 0

كيف أدور حول قيم قاموس في بايثون؟

أريد أن أمرر هذا القاموس { k1: v1, k2: v2 ... } وأريد الحصول على { k1: f(v1), k2: f(v2) ... } حيث أن f هي دالة.
فهل هنالك دالة معينة للقيام بذلك؟ أريد القيام بشيء مثل هذا:

dict([(k, f(v)) for (k, v) in my_dictionary.iteritems()])

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

لا توجد دالة في لغة بايثون للدوران حول القيم في القاموس، لكن أسهل طريقة لفعل ذلك هي استخدام طريقة "تفهيم القاموس" (dict comprehension) كما في المثال التالي:

my_dictionary = {k: f(v) for k, v in my_dictionary.items()}

في الإصدار 2.7 من بايثون استخدم iteritems() بدلا من items() لتوفير الذاكرة، كما أن صياغة "تفهيم القاموس" لم تعرف حتى الإصدار 2.7 من بايثون.
لا توجد كذلك دالة في لغة بايثون للدوران في القائمة لذلك يمكنك في هذه الحالة استخدام map().
مثال لاستخدام map() مع المثال السابق:

my_dictionary = dict(map(lambda (k,v): (k, f(v)), my_dictionary.iteritems()))

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن