• 0

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

أحتاج إلى دمج القواميس التالية:

d1={1:2,3:4}
d2={5:6,7:9}
d3={10:8,13:22}

لتصبح قاموس واحد كما يظهر في المثال التالي:

d4={1:2,3:4,5:6,7:9,10:8,13:22}

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

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


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

هنالك عدّة طرق في لغة بايثون لدمج القواميس وبما أنك ذكرت السرعة فأسرع طريقة للدمج هي عبر استخدام منشئ dict ومن ثم استخدام دالة update كما يظهر في المثال التالي:

$ python -mtimeit -s'd1={1:2,3:4}; d2={5:6,7:9}; d3={10:8,13:22}' \
'd4 = dict(d1, **d2); d4.update(d3)'

1000000 loops, best of 3: 1.88 usec per loop

أو يمكنك استخدام هذه الطريقة التي استعملنا فيها دالة update مباشرة فهي كما تلاحظ أبطئ قليلا لكنها مقبولة:

$ python -mtimeit -s'd1={1:2,3:4}; d2={5:6,7:9}; d3={10:8,13:22}' \
'd4 = {}' 'for d in (d1, d2, d3): d4.update(d)'

100000 loops, best of 3: 2.67 usec per loop

كما يمكنك دمج محتويات القواميس عن طريق استخدام دالة items() مع العامل الحسابي + كما في المثال التالي على الرغم من أنني لا أنصح بهذه الطريقة لأنها الأبطأ:

$ python -mtimeit -s'd1={1:2,3:4}; d2={5:6,7:9}; d3={10:8,13:22}' \
'd4 = dict(d1.items() + d2.items() + d3.items())'

100000 loops, best of 3: 4.93 usec per loop

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


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

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

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

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


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

تسجيل الدخول

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


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