2013-02-21 41 views
5

के आधार पर एक शब्दकोश में योग मान मैं एक शब्दकोश है कि Key:Values.पायथन: हालत

मान पूर्णांक हैं की है। मैं किसी शर्त के आधार पर मानों का योग प्राप्त करना चाहता हूं ... सभी मान> 0 (i.e) कहें।

मैंने कुछ बदलावों की कोशिश की है, लेकिन दुर्भाग्य से कुछ भी काम नहीं करता है।

+1

देखें http://stackoverflow.com/questions/11692613/python-sum-values-in-dictionary – user1929959

उत्तर

1
>>> a = {'a' : 5, 'b': 8} 
>>> sum(value for _, value in a.items() if value > 0) 
9

, शब्दकोश पर values विधि (जो अजगर 3.x में एक जनरेटर रिटर्न) का उपयोग कर प्रत्येक मान के माध्यम से पुनरावृत्ति और संक्षेप अगर यह 0 से अधिक है (या जो भी अपनी हालत है) का प्रयास करें:

In [1]: d = {'one': 1, 'two': 2, 'twenty': 20, 'negative 4': -4} 

In [2]: sum(v for v in d.values() if v > 0) 
Out[2]: 23 
+0

वाह, यह सबसे अच्छा उदाहरण हो सकता है जो मैंने अंग्रेजी में एक संक्षिप्त स्पष्टीकरण के बारे में देखा है जो जेनरेटर अभिव्यक्ति को मानचित्र करता है इस तरह के एक स्पष्ट तरीके से आपको यह कहने की भी आवश्यकता नहीं है कि आप क्या कर रहे हैं। इच्छा है कि मैं +1 से अधिक दे सकता हूं। – abarnert

+0

@abarnert आप से आ रहा है जो काफी तारीफ है, धन्यवाद :) – RocketDonkey

+0

कमाल। धन्यवाद। – user2097496