पायथन में एक नया शब्दकोश बनाना


454

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

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

जवाबों:


661

dictकोई मापदंडों के साथ कॉल करें

new_dict = dict()

या बस लिखो

new_dict = {}

39
क्या तानाशाही () और {} में कोई अंतर है? या लोग सिर्फ एक दूसरे को पसंद करते हैं?
मैट

52
@ मैट जाहिरा तौर पर CPython 2.7 तानाशाह () धीमा (6 गुना धीमा?) है, देखें: doughellmann.com/2012/11/… किसी भी मामले में मैं कंस्ट्रक्टर सिंटैक्स पसंद करना शुरू कर रहा हूं क्योंकि मुझे टाइप करना और कोड स्थानांतरित करना आसान लगता है dicts और फ़ंक्शन कॉल के बीच।
डेविड व्हीटन

16
मुझे यह बताते हुए इसे 3 बार अजगर 3.x में उपयोग {} dict से () के लिए तेज है
एलेक्स Azazel

8
हाँ, मैं लगभग 4 गुना तेजी से अजगर 3.6 में के लिए मिल {}के ऊपर dict()के लिए और 5 बार []से अधिक list()
माइकल हॉल

10
अधिकांश मामलों में, इससे कोई फर्क नहीं पड़ता कि यह छह गुना अधिक समय लेता है, क्योंकि यह अभी भी एक छोटी राशि नहीं है।
ह्यपहुमन

247

तुम यह केर सकते हो

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

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

27

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

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

# Explicitly:
# -----------
def cxlate(country):
    try:
        ret = cmap[country]
    except KeyError:
        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अपने आप में बहुत जटिल है। आप बस return cmap.get(country, '?')।)
डैनियल डारबोस

हर जगह अनुवाद फ़ंक्शन लिखने या उपयोग करने (।) के बजाय docs.python.org/2/library/… का उपयोग करने पर विचार करें ।
शुक्राणु

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

1
असंबंधित, लेकिन आपको स्पष्ट रूप KeyErrorसे एक नंगे को छोड़कर पकड़ना चाहिए (जो चीजों को पकड़ लेगा जैसे KeyboardInterruptऔर SystemExit)।
अर्नव बोरबोराह

अर्नव, हाँ बिल्कुल सही कहा आपने। तदनुसार संपादित किया गया। धन्यवाद!
fyngyrz


15
d = dict()

या

d = {}

या

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

क्या अंतर है types.DictType.__new__(types.DictType, (), {})और बस{}

2
इसे पढ़ने वाले किसी के लिए: अंतिम "समाधान" एक मजाक है - आप इसका इस्तेमाल कर सकते हैं (अजगर 2.x में कम से कम - py3k में काम नहीं करेगा), लेकिन इसमें कोई भी व्यक्ति कभी भी अपना मन नहीं बनाना चाहेगा तो ;-)
ब्रूनो डेथिलियर्स 7


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.