• 1

كيف أعكس محتويات قاموس في البايثون؟

هل هنالك طريقة لعكس محتويات قاموس في لغة البايثون؟ أي أن القيمة تصبح المفتاح والمفتاح يصبح قيمة كما في المثال التالي:

map = { 'a': 1, 'b':2 }

الناتج بعد عملية القلب/العكس:

inv_map = { 1: 'a', 2: 'b' } 

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


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

نعم هنالك العديد من الطرق في بايثون لقلب محتويات قاموس معين، ومن أسهل هذه الطرق استخدام حلقة تكرار for داخل عناصر القاموس وإنشاء قاموس جديد كما في المثال التالي:

inv_map = {v: k for k, v in map.items()}

كما يمكنك أيضا قلب محتويات القاموس عن طريق الأمر التالي المشابه للأمر السابق:

dict((v, k) for k, v in map.iteritems())

طريق أخرى للحل لكن أطول قليلا من سابقاتها:

inv_map = {}
for k, v in map.iteritems():
    inv_map[v] = inv_map.get(v, [])
    inv_map[v].append(k)

ملاحظة: الأمثلة السابقة تعمل على الإصدار 2.7 من بايثون فما فوق.

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


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

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

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

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


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

تسجيل الدخول

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


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