= {
animal_class "Dog": "Mammalia",
"Cat": "Mammalia",
"Elephant": "Mammalia",
"Snake": "Reptilia",
"Lizard": "Reptilia",
"Frog": "Amphibia",
}
تطبيقات
الأجزاء المنتمية إلى الكل
أو الاختصارات إلى الكلمة التامة:
نريد عكس هذه القائمة أيضًا بحيث نستطيع أن نعرف من الصنف كل الحيوانات المتنمية إليه.
نأتي على جميع المفاتيح في القاموس الأول ونضيفها بحسب القيمة التي تقابلها:
= {}
class_animal for animal, clazz in animal_class.items():
if clazz not in class_animal:
= []
class_animal[clazz]
class_animal[clazz].append(animal) class_animal
{'Mammalia': ['Dog', 'Cat', 'Elephant'],
'Reptilia': ['Snake', 'Lizard'],
'Amphibia': ['Frog']}
لاحظ استعمال اسم clazz
بدل class
لأن كلمة class
أصلية في لغة بايثون فلا يجوز استعمالها كمتغير.
سلة المشتريات
نفترض أن لدينا سلة تحتوي على مشتريات العميل (basket
)، ونريد حساب القيمة الإجمالية لها، ولدينا قائمة بأسعار الفواكه. فنعرف الأسعار على أنها قاموس prices
بحيث يشير اسم الفاكهة إلى سعرها (قيمتها المالية).
= {
prices 'apple': 15.25,
'banana': 10.50,
'orange': 5.75,
'cantaloupe': 40.00
}
يجوز تحديث الأسعار هكذا:
'banana'] = 12
prices['orange'] = 15 prices[
أو تحديثها بالإجراء update()
:
'banana': 12, 'orange': 15})
prices.update({ prices
{'apple': 15.25, 'banana': 12, 'orange': 15, 'cantaloupe': 40.0}
والآن نفترض أن لدينا قائمة بالفواكه التي يريدها العميل:
= ['apple', 'apple', 'banana', 'orange', 'banana'] basket
نحسب سعر كل فاكهة في السلة بناءً على الأسعار الموجودة في القاموس:
= 0
total
for fruit in basket:
+= prices[fruit]
total
print(total)
69.5
أو تستطيع أن تعدها أولاً ثم تضربها بالسعر:
= dict()
counts for fruit in set(basket):
= basket.count(fruit)
counts[fruit] counts
{'banana': 2, 'apple': 2, 'orange': 1}
ثم تضربها بالسعر:
= sum(counts[fruit] * prices[fruit] for fruit in counts)
total total
69.5
استعمال الإنشاء المختصر
تقدم معنا الكلام عن الإنشاء المختصر. وسنستعرضه الآن مع القاموس.
هنا مثال لقاموس من الفواكه، نريد ترشيح ما قيمته أقل من 20:
= {
menu 'apple': 15,
'banana': 10,
'orange': 5,
'cantaloupe': 40
}
= {k: v for k, v in menu.items() if v < 20}
filtered_menu filtered_menu
{'apple': 15, 'banana': 10, 'orange': 5}
وهذا مثال أكثر تعقيدًا. نطبق خصم 20% فقط على العناصر التي يكون سعرها أعلى من المتوسط، مع الحفاظ على بقية الأسعار كما هي. لاحظ أن التعبير هنا هو تعيين شرطي: value * (1 - discount) if value > avg_price else value
وليس هو قطعة الترشيح (if
)؛ إذ تلك تأتي في نهاية الجملة، بعد قطعة التكرار (for
).
= {
menu 'apple': 15,
'banana': 10,
'orange': 5,
'cantaloupe': 40
}
= sum(menu.values()) / len(menu)
avg_price = 0.20
discount
= {
discounted_menu * (1 - discount) if v > avg_price else v
k: v for k, v in menu.items()
} discounted_menu
{'apple': 15, 'banana': 10, 'orange': 5, 'cantaloupe': 32.0}