2017-04-15 7 views
5

यदि मैं किसी और कथन के बजाय शब्दकोश का उपयोग करके एक कथन लिखना चाहता था, तो यह कैसे होगा? उदाहरण के लिए, अगर मैं इस शब्दकोश का उपयोग कर फिर से लिखने के लिए गए थे मैंयदि/else कथन बनाम शब्दकोश

def determineRank(years): 
    if years == 1: 
     return "Freshman" 
    elif years == 2: 
     return "Sophmore" 
    elif years == 3: 
     return "Junior" 
    else: 
     return "Senior" 

है कहते हैं, यह

rank = {"Freshman":1, "Sophmore":2, "Junior":3, "Senior", ???} 

क्या संख्या मैं और के लिए लिखते थे हो सकता है? दूसरा तर्क के रूप में डिफ़ॉल्ट मान के साथ

उत्तर

5

उपयोग .get विधि:

rank = {1: 'Freshman', 2: 'Sophmore', 3: 'Junior'} 
rank.get(years, 'Senior') 
+1

हां, ओपी के 'रैंक' शब्दकोश को छोड़कर मूल्यों के रूप में वर्षों हैं, चाबियाँ – vaultah

+0

@ vaultah कोई फर्क नहीं पड़ता। यदि आवश्यक हो, तो आप 'रैंक = dict (y, x) जैसे x, y के लिए पुराने_rank.iteritems() में मानों को स्विच कर सकते हैं)' –

+0

आपको * रैंक.get' काम करने की अपेक्षा करने के लिए * ऐसा करना था , तो यह वास्तव में मायने रखता है। – vaultah

3

आप dictObject.get(key, defaultValue) उपयोग कर सकते हैं।

तो, अपने कार्य के बराबर होगा:

rank = {1: "Freshman", 2: "Sophmore", 3:"Junior"}.get(year, "Senior"); 

ध्यान दें कि शब्दकोश की कुंजी/मान जोड़े उलट है।

1

dict.get का उपयोग करके, यहां पर पोस्ट किए जाने के लिए बस KeyError का उपयोग नहीं करेगा, उदाहरण के लिए, उदाहरण के लिए 'वरिष्ठ', शब्दकोश में पहले से ही नहीं है।

तुम भी कुछ इस तरह कर सकता है, एक दिए गए वर्ष पहले से ही rank में एक महत्वपूर्ण है कि क्या जांच करने के लिए त्रिगुट ऑपरेटर का उपयोग:

rank = {1: "Freshman", 2: "Sophomore", 3: "Junior"} 
year = 4 
year_rank = rank[year] if year in rank else "Senior" 

year_rank "वरिष्ठ" हो जाएगा

मुझे लगता है कि dict.get विधि थोड़ा बेहतर है, यद्यपि।

संबंधित मुद्दे