سنتعلم الآن كيف نضيف أزواج مفتاح وقيمة جديدة إلى القاموس، مثلما نحتاج عند تسجيل ما يشتريه العميل.
قبل القواميس، لنراجع سريعًا طريقة إضافة عناصر إلى قائمة. شغّل البرنامج:
__copyable__ __program_indented__
تعتمد النتيجة على ترتيب المفاتيح في القاموس الأصلي. إذا لم يكن السبب واضحًا، فتتبّع تنفيذ الكود خطوة بخطوة وراقب متى تُكتب كل قيمة داخل القاموس الجديد.
ومع ذلك توجد حالات كثيرة تستطيع فيها التأكد من أن قيم القاموس الأصلية فريدة، وعندها يكون «عكس» القاموس منطقيًا. رأينا سابقًا هذا المثال:
__copyable__ __no_auto_translate__ def substitute(string, d): result = "" for letter in string: result += d[letter] return result
plaintext = 'helloworld' encrypted = 'qpeefifmez' letters = {'h': 'q', 'e': 'p', 'l': 'e', 'o': 'f', 'w': 'i', 'r': 'm', 'd': 'z'} reverse = {'q': 'h', 'p': 'e', 'e': 'l', 'f': 'o', 'i': 'w', 'm': 'r', 'z': 'd'} check_result(substitute(plaintext, letters), encrypted) check_result(substitute(encrypted, reverse), plaintext)
والآن نستطيع إنشاء reverse تلقائيًا:
reverse = swap_keys_values(letters)
لكي ينجح هذا يجب أن تكون كل القيم في letters فريدة. إذا استُبدل كل من 'h' و'j' بالقيمة 'q' أثناء التشفير، فلن توجد طريقة عند فك التشفير لمعرفة هل 'qpeef' كانت أصلًا 'hello' أم 'jello'.
تهانينا! وصلت إلى نهاية الجزء المتاح حاليًا من الدورة. سيُضاف المزيد لاحقًا.