जैसा कि पायथन 3.0 और 3.1 ईओएलडी हैं और कोई भी उनका उपयोग नहीं करता है, आप कर सकते हैं और इसका उपयोग करना चाहिए str.format_map(mapping)(पायथन 3.2+):
इसी के लिए str.format(**mapping), कि मानचित्रण सिवाय सीधे और नहीं एक में कॉपी किया करते थे हैdict । यह उपयोगी है यदि उदाहरण के लिए मानचित्रण एक dictउपवर्ग है।
इसका मतलब यह है कि आप उदाहरण के लिए उपयोग कर सकते हैं defaultdictजो कि गुम हो जाने वाली कुंजियों के लिए डिफ़ॉल्ट मान सेट करेगा (और वापस लौटाएगा):
>>> from collections import defaultdict
>>> vals = defaultdict(lambda: '<unset>', {'bar': 'baz'})
>>> 'foo is {foo} and bar is {bar}'.format_map(vals)
'foo is <unset> and bar is baz'
यहां तक कि अगर प्रदान की गई मैपिंग एक है dict, तो एक उपवर्ग नहीं, यह शायद अभी भी थोड़ा तेज होगा।
अंतर हालांकि बड़ा नहीं है, दिया गया है
>>> d = dict(foo='x', bar='y', baz='z')
फिर
>>> 'foo is {foo}, bar is {bar} and baz is {baz}'.format_map(d)
से लगभग 10 एनएस (2%) तेज है
>>> 'foo is {foo}, bar is {bar} and baz is {baz}'.format(**d)
मेरे पायथन 3.4.3 पर। यह अंतर संभवतः बड़ा होगा क्योंकि शब्दकोश में अधिक चाबियाँ हैं, और
ध्यान दें कि प्रारूप भाषा हालांकि उससे अधिक लचीली है; वे अनुक्रमित अभिव्यक्ति, विशेषता अभिगम और इतने पर हो सकते हैं , इसलिए आप एक पूरी वस्तु को प्रारूपित कर सकते हैं , या उनमें से 2:
>>> p1 = {'latitude':41.123,'longitude':71.091}
>>> p2 = {'latitude':56.456,'longitude':23.456}
>>> '{0[latitude]} {0[longitude]} - {1[latitude]} {1[longitude]}'.format(p1, p2)
'41.123 71.091 - 56.456 23.456'
3.6 से शुरू करके आप प्रक्षेपित तारों का भी उपयोग कर सकते हैं:
>>> f'lat:{p1["latitude"]} lng:{p1["longitude"]}'
'lat:41.123 lng:71.091'
आपको केवल नेस्टेड कोट्स के भीतर अन्य उद्धरण वर्णों का उपयोग करने के लिए याद रखने की आवश्यकता है । इस दृष्टिकोण का एक और उल्टा तरीका यह है कि यह प्रारूपण पद्धति को कॉल करने की तुलना में बहुत तेज है ।