سؤال

لدي كائن قاموس بايثون يحتوي على قيمة منطقية لكل مفتاح، على سبيل المثال:

d = {'client1': True, 'client2': False}

ما هي الطريقة الأسهل والأكثر إيجازًا لحساب عدد القيم الحقيقية في القاموس؟

هل كانت مفيدة؟

المحلول

للتوضيح:

num_true = sum(1 for condition in d.values() if condition)

من أجل إيجاز (هذا يعمل لأن TRUE هو فئة فرعية من int مع القيمة 1):

num_true = sum(d.values())

نصائح أخرى

sum(d.values())
a.values().count(True)

في بايثون 2.*, ، sum(d.itervalues()) أقل إيجازًا قليلًا من sum(d.values()) يقترح الكثيرون (4 أحرف إضافية؛-)، لكنهم يتجنبون تجسيد قائمة القيم دون داعٍ وبالتالي يوفرون الذاكرة (وربما الوقت) عندما يكون لديك قاموس كبير للتعامل معه.

كما أشار البعض، هذا يعمل بشكل جيد، لأن المنطقيات هي ints (فئة فرعية، على وجه التحديد):

>>> False==0
True
>>> False+True
1

ولذلك، لا حاجة إلى الإطناب if شروط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top