python - पायथन में सूची समझ के साथ एक शब्दकोश बनाएँ




dictionary list-comprehension (7)

मुझे पायथन सूची समझ वाक्यविन्यास पसंद है।

क्या इसका इस्तेमाल शब्दकोश बनाने के लिए भी किया जा सकता है? उदाहरण के लिए, चाबियों और मानों के जोड़े पर पुनरावृत्ति करके:

mydict = {(k,v) for (k,v) in blah blah blah}  # doesn't work

पायथन में सूची समझ के साथ एक शब्दकोश बनाएँ

मुझे पायथन सूची समझ वाक्यविन्यास पसंद है।

क्या इसका इस्तेमाल शब्दकोश बनाने के लिए भी किया जा सकता है? उदाहरण के लिए, चाबियों और मानों के जोड़े पर पुनरावृत्ति करके:

mydict = {(k,v) for (k,v) in blah blah blah}

मानते हुए blah blah blah दो-टुपल्स का एक पुनरावृत्ति है - आप बहुत करीब हैं। आइए कुछ "blahs" बनाएं जैसे कि:

blahs = [('blah0', 'blah'), ('blah1', 'blah'), ('blah2', 'blah'), ('blah3', 'blah')]

डिक्ट समझ वाक्यविन्यास

अब यहां वाक्यविन्यास मैपिंग हिस्सा है। यह एक सेट समझ के बजाय एक धैर्य समझ को बनाता है (जो आपके छद्म कोड अनुमानित है) कोलन है :

mydict = {k: v for k, v in blahs}

और अब:

>>> mydict
{'blah0': 'blah', 'blah1': 'blah', 'blah3': 'blah', 'blah2': 'blah'}

एक फ़िल्टर जोड़ना:

सूची की समझ की तरह, आप अंत में फ़िल्टर भाग जोड़ सकते हैं:

>>> mydict = {k: v for k, v in blahs if not int(k[-1]) % 2}
>>> mydict
{'blah0': 'blah', 'blah2': 'blah'}

यहां हम परीक्षण करते हैं कि आखिरी चरित्र 2 से विभाजित है या नहीं।


@ फोर्ट्रान के उत्तर पर जोड़ने के लिए, यदि आप कुंजी की सूची key_list साथ-साथ मानों की सूची मूल्य सूची में value_list : value_list :

d = dict((key, value) for (key, value) in zip(key_list, value_list))

या

d = {(key, value) for (key, value) in zip(key_list, value_list)}

असल में, अगर आप पहले से ही किसी प्रकार की मैपिंग को समझते हैं, तो आपको पुनरावृत्ति पर फिर से प्रयास करने की आवश्यकता नहीं है, यह आपके लिए दयालु तरीके से कर रहे हैं:

>>> ts = [(1, 2), (3, 4), (5, 6)]
>>> dict(ts)
{1: 2, 3: 4, 5: 6}
>>> gen = ((i, i+1) for i in range(1, 6, 2))
>>> gen
<generator object <genexpr> at 0xb7201c5c>
>>> dict(gen)
{1: 2, 3: 4, 5: 6}

इसे इस्तेमाल करे,

def get_dic_from_two_lists(keys, values):
    return { keys[i] : values[i] for i in range(len(keys)) }

मान लें कि हमारे पास देश और पूंजी की दो सूचियां हैं

country = ['India', 'Pakistan', 'China']
capital = ['New Delhi', 'Islamabad', 'Beijing']

फिर दो सूचियों से शब्दकोश बनाएं:

print get_dic_from_two_lists(country, capital)

आउटपुट इस तरह है,

{'Pakistan': 'Islamabad', 'China': 'Beijing', 'India': 'New Delhi'}

पायथन 3 / पायथन 2.7+ में धैर्य की समझ इस तरह काम करती है:

d = {k:v for k, v in iterable}

Python 2.6 और इससे पहले, फोर्टन का जवाब देखें।


पायथन स्कूल समझ का प्रयोग करें। इसके बारे में और जानने के लिए यहां पृष्ठ है: डिक्ट समझें


सरल

संस्करण <2.7 के लिए

d = dict((i,True) for i in [1,2,3])

संस्करण> = 2.7 के लिए

d = {i: True for i in [1,2,3]}




dict-comprehension