के रूप में दूसरों का उल्लेख किया है, a.update(b)कुछ dicts के लिए aऔर bपरिणाम आप अपने प्रश्न में के लिए कहा है प्राप्त करेंगे। हालांकि, मैं करते रहे कि कई बार मैंने देखा है चाहता हूँ extendमैपिंग की विधि / सेट वस्तुओं की इच्छा वाक्य रचना में a.extend(b), aके मूल्यों नहीं द्वारा ओवरराइट किया जाना चाहिए bरों मूल्यों '। मूल्यों को a.update(b)अधिलेखित aकरता है, और इसलिए इसके लिए एक अच्छा विकल्प नहीं है extend।
ध्यान दें कि कुछ भाषाएं इस विधि को defaultsया inject, क्योंकि इसे बी के मूल्यों को इंजेक्ट करने के तरीके के रूप में माना जा सकता है (जो कि डिफ़ॉल्ट मानों का एक सेट हो सकता है) एक शब्दकोश में बिना ओवर राइटिंग मूल्यों के पहले से मौजूद हो सकता है।
बेशक, आप सरल नोट कर सकते हैं जो a.extend(b)लगभग उसी तरह है b.update(a); a=b। असाइनमेंट को हटाने के लिए, आप इसे इस प्रकार कर सकते हैं:
def extend(a,b):
"""Create a new dictionary with a's properties extended by b,
without overwriting.
>>> extend({'a':1,'b':2},{'b':3,'c':4})
{'a': 1, 'c': 4, 'b': 2}
"""
return dict(b,**a)
टॉम लेय्स के लिए धन्यवाद कि स्मार्ट विचार के लिए एक साइड-इफेक्ट-कम dictकंस्ट्रक्टर का उपयोग कर रहा है extend।