في هذه المقالة، ستتعلم كيفية إنشاء قاموس من قائمتين (2) في بايثون.
ولجعل الأمر أكثر متعة، لدينا السيناريو الجاري التالي:
تحتاج شركة Biogenix، وهي شركة لمستلزمات المختبرات، إلى تحديد أفضل عنصر من الجدول الدوري لإنتاج منتج جديد. لديهم قائمتان (2). اسم العنصر، والكتلة الذرية الأخرى. ويفضلون ذلك في شكل قاموس.
يمكننا إنجاز هذه المهمة من خلال أحد الخيارات التالية:
- الطريقة 1: استخدام
dict()
وzip()
- الطريقة الثانية: استخدام فهم القاموس
- الطريقة 3: استخدام تعبير المولد مع
dict()
وzip()
- الطريقة 4: استخدام Lambda
الطريقة 1: استخدام ()dict و()zip
تستخدم هذه الطريقة zip()
لدمج قائمتين في كائن قابل للتكرار و(dict()
) لتحويله إلى قاموس على شكل أزواج مفتاح:قيمة.
1 2 3 4 5 6 7 8 | el_name = ['Meitnerium', 'Darmstadtium', 'Roentgenium', 'Copernicium', 'Nihonium', 'Flerovium', 'Moscovium', 'Livermorium', 'Tennessine', 'Oganesson'] el_atom = [277.154, 282.166, 282.169, 286.179, 286.182, 290.192, 290.196, 293.205, 294.211, 295.216] merge_lists = zip(el_name, el_atom) new_dict = dict(merge_lists) for k, v in new_dict.items(): print ("{:<20} {:<15}".format(k, v)) |
- تُنشئ الأسطر [1-2] قائمتين تحتويان على اسم العنصر (el_name) والكتلة الذرية المقابلة (el_atom)، على التوالي.
- يقوم السطر [3] بدمج القائمتين باستخدام
zip()
وتحويلهما إلى كائن قابل للتكرار. يتم حفظ النتائج في merge_lists. - يقوم السطر [4] بتحويل merge_lists إلى قاموس (
dict()
). يتم حفظ النتائج في new_dict كأزواج مفتاح:قيمة. - يقوم السطر [5] بإنشاء حلقة For لإرجاع أزواج المفتاح:القيمة من new_dict.
الطريقة الثانية: استخدام فهم القاموس
تستخدم هذه الطريقة فهم القاموس لدمج قائمتين في كائن قابل للتكرار وتحويله إلى قاموس كأزواج مفتاح:قيمة. سطر واحد رائع!
1 2 3 4 5 6 | el_name = ['Meitnerium', 'Darmstadtium', 'Roentgenium', 'Copernicium', 'Nihonium', 'Flerovium', 'Moscovium', 'Livermorium', 'Tennessine', 'Oganesson'] el_atom = [277.154, 282.166, 282.169, 286.179, 286.182, 290.192, 290.196, 293.205, 294.211, 295.216] new_dict = {el_name[i]: el_atom[i] for i in range(len(el_name))} for k, v in new_dict.items(): print ("{:<20} {:<15}".format(k, v)) |
- تُنشئ الأسطر [1-2] قائمتين تحتويان على اسم العنصر (el_name) والكتلة الذرية المقابلة (el_atom)، على التوالي.
- يقوم السطر [3] بدمج القوائم كأزواج مفتاح:قيمة وتحويلها إلى قاموس. يتم حفظ النتائج في new_dict.
- يقوم السطر [4] بإنشاء حلقة For لإرجاع أزواج المفتاح:القيمة من new_dict.
الطريقة 3: استخدام تعبير المولد مع ()zip و()dict
تستخدم هذه الطريقة تعبير المولد لدمج قائمتين في كائن قابل للتكرار (zip()
) وتحويله إلى قاموس (dict()
) كأزواج مفتاح:قيمة.
1 2 3 4 5 6 | el_name = ['Meitnerium', 'Darmstadtium', 'Roentgenium', 'Copernicium', 'Nihonium', 'Flerovium', 'Moscovium', 'Livermorium', 'Tennessine', 'Oganesson'] el_atom = [277.154, 282.166, 282.169, 286.179, 286.182, 290.192, 290.196, 293.205, 294.211, 295.216] gen_exp = dict(((k, v) for k, v in zip(el_name, el_atom))) for k, v in new_dict.items(): print ("{:<20} {:<15}".format(k, v)) |
- تُنشئ الأسطر [1-2] قائمتين تحتويان على اسم العنصر (el_name) والكتلة الذرية المقابلة (el_atom) على التوالي.
- يستخدم السطر [3] تعبير المولد لدمج القوائم (zip()) وإنشاء كائن قابل للتكرار. يتحول الكائن إلى قاموس (dict()) ويحفظ مرة أخرى في gen_exp.
- يقوم السطر [5] بإنشاء حلقة For لإرجاع أزواج المفتاح:القيمة من new_dict.
الطريقة 4: استخدام Lambda
تستخدم هذه الطريقة Lambda لدمج قائمتين في كائن قابل للتكرار (zip()) وتحويله إلى قاموس (dict()) كأزواج مفتاح:قيمة.
1 2 3 4 5 6 | el_name = ['Meitnerium', 'Darmstadtium', 'Roentgenium', 'Copernicium', 'Nihonium', 'Flerovium', 'Moscovium', 'Livermorium', 'Tennessine', 'Oganesson'] el_atom = [277.154, 282.166, 282.169, 286.179, 286.182, 290.192, 290.196, 293.205, 294.211, 295.216] new_dict = dict((lambda n, a: {name: el_atom for name, el_atom in zip(n, a)})(el_name, el_atom)) for k, v in new_dict.items(): print ("{:<20} {:<15}".format(k, v)) |
- تُنشئ الأسطر [1-2] قائمتين تحتويان على اسم العنصر (el_name) والكتلة الذرية المقابلة (el_atom) على التوالي.
- يستخدم السطر [3] دالة lambda لدمج القوائم (zip()) وإنشاء كائن قابل للتكرار. يتم حفظ النتائج في قاموس new_dict كأزواج مفتاح:قيمة.
- يقوم السطر [4] بإنشاء حلقة For لإرجاع أزواج المفتاح:القيمة من new_dict.
بعد مراجعة الطرق المذكورة أعلاه، قررنا أن الطريقة الثانية هي الأفضل: الحد الأدنى من النفقات العامة وعدم الحاجة إلى وظائف إضافية.
ليست هناك تعليقات:
إرسال تعليق