2011-12-08 7 views
260

में एक नया नियम बनाना मैं पाइथन में एक शब्दकोश बनाना चाहता हूं। हालांकि, मेरे द्वारा देखे जाने वाले सभी उदाहरण एक सूची से एक शब्दकोश को तत्काल कर रहे हैं, आदि। ..पायथन

मैं पायथन में नया खाली शब्दकोश कैसे बना सकता हूं?

उत्तर

380

कॉल dict कर सकते हैं

new_dict = dict() 

या बस लिखने

new_dict = {} 
+18

क्या dict() और {} के बीच कोई अंतर है? या क्या लोग सिर्फ एक दूसरे को पसंद करते हैं? – Matt

+30

@ मैट स्पष्ट रूप से सीपीथन 2.7 dict() धीमा है (6 गुना धीमा?), देखें: http://doughellmann.com/2012/11/the-performance-impact-of-using-dict-instead-of-in- cpython-2-7-2.html किसी भी मामले में मैं कन्स्ट्रक्टर सिंटैक्स को वैसे भी पसंद करना शुरू कर रहा हूं क्योंकि मुझे टाइप्स और फ़ंक्शन कॉल के बीच कोड टाइप करना और स्थानांतरित करना आसान लगता है। –

+0

@ डेविड व्हाटटन इस बात को इंगित करने के लिए धन्यवाद! व्यक्तिगत रूप से, मुझे 'new_dict = dict()' थोड़ा अधिक पठनीय लगता है, फिर भी प्रदर्शन के संबंध में इतना बड़ा अंतर है ... प्रदर्शन के लिए जाना होगा! ;) (जो के बारे में उलझन हैं अजगर और Cphython देखें: [यहां] (http://stackoverflow.com/a/17130986/4773274)) – holzkohlengrill

144

आप कोई पैरामीटर के साथ इस

x = {} 
x['a'] = 1 
+55

+1 इसके लिए एक नया तत्व जोड़ने के लिए अगले तार्किक प्रश्न के लिए –

12
d = dict() 

या

d = {} 

या

import types 
d = types.DictType.__new__(types.DictType,(), {}) 
15

कैसे एक पूर्व निर्धारित शब्दकोश लिखने के लिए यह जानते हुए के रूप में अच्छी तरह से पता करने के लिए उपयोगी है:

cmap = {'US':'USA','GB':'Great Britain'} 

def cxlate(country): 
    try: 
     ret = cmap[country] 
    except: 
     ret = '?' 
    return ret 

present = 'US' # this one is in the dict 
missing = 'RU' # this one is not 

print cxlate(present) # == USA 
print cxlate(missing) # == ? 

# or, much more simply as suggested below: 

print cmap.get(present,'?') # == USA 
print cmap.get(missing,'?') # == ? 

# with country codes, you might prefer to return the original on failure: 

print cmap.get(present,present) # == USA 
print cmap.get(missing,missing) # == RU 
+4

अच्छा बिंदु! लेकिन मुझे लगता है कि 'cxlate' के साथ थोड़ा सा जवाब आपके जटिल लगते हैं। मैं सिर्फ प्रारंभिक भाग रखना चाहता हूं। ('Cxlate' ने स्वयं को बहुत जटिल है। तुम बस' वापसी cmap.get (देश, '?') '। सकता है) –

+0

https://docs.python.org/2/library/collections.html#collections उपयोग पर विचार करें। एक अनुवाद समारोह लिखने या हर जगह .get() का उपयोग करने के बजाय डिफ़ॉल्टdict। – Sparr

+1

शायद मैं होता, सिवाय इसके कि प्रलेखन बिल्कुल मेरे लिए अपारदर्शी है - यह भयानक है। मुझे नहीं पता कि वे मुझे क्या करने के लिए कह रहे हैं, या मुझे ऐसा क्यों करना चाहिए। और .get() बिल्कुल सही काम करता प्रतीत होता है - साथ ही यह बेहद लचीला है। मुझे यकीन है कि यह मेरे हिस्से पर समझ की कमी है। इसे ध्यान में रखते हुए, मेरे प्रश्न हैं: परेशान क्यों? आदि यहाँ क्या सहेजा जाता है, यहाँ आसान है, तेजी से यहाँ? लाभ बिल्कुल क्या है? – fyngyrz

8
>>> dict(a=2,b=4) 
{'a': 2, 'b': 4} 

अजगर शब्दकोश में मूल्य जोड़ने जाएगा।