2009-08-26 17 views
8

न्यूबी से पाइथन तक कोई भी मान हटाएं, इसलिए यह मूर्खतापूर्ण प्रतीत हो सकता है।पाइथन dict

मैं दो dicts है:

default = {'a': 'alpha', 'b': 'beta', 'g': 'Gamma'} 
user = {'a': 'NewAlpha', 'b': None} 

मैं मूल्यों है कि उपयोगकर्ता में मौजूद के साथ मेरी चूक अपडेट करना होगा। लेकिन केवल उन लोगों के लिए जिनके पास कोई मूल्य नहीं है।

result = {'a': 'NewAlpha', 'b': 'beta', 'g': 'Gamma'} 

उत्तर

18
result = default.copy() 
result.update((k, v) for k, v in user.iteritems() if v is not None) 
+1

और अजगर 3 में, उपयोग user.items() – Ayman

7
update() विधि के साथ

, और कुछ जनरेटर अभिव्यक्ति:: तो मैं एक नया dict वापस पाने के लिए की जरूरत है

D.update((k, v) for k, v in user.iteritems() if v is not None) 
संबंधित मुद्दे