ठीक है, यह एक ऐसी चीज है जिसने मुझे कुछ बार परेशान किया है, इसलिए इसे पूछने के लिए जयेश धन्यवाद।
ऊपर दिए गए जवाब किसी भी तरह से एक समाधान के रूप में अच्छे लगते हैं, लेकिन अगर आप अपने पूरे कोड का उपयोग कर रहे हैं, तो यह कार्यक्षमता IMHO को लपेटने के लिए समझ में आता है। इसके अलावा, यहां दो संभावित उपयोग के मामले हैं: एक जहां आप इस बात की परवाह करते हैं कि सभी शब्द मूल शब्दकोश में हैं या नहीं। और एक तुम कहाँ नहीं है दोनों के साथ समान व्यवहार करना अच्छा होगा।
इसलिए, मेरे दो पैसे के मूल्य के लिए, मैं शब्दकोश की एक उप-श्रेणी लिखने का सुझाव देता हूं, उदाहरण के लिए
class my_dict(dict):
def subdict(self, keywords, fragile=False):
d = {}
for k in keywords:
try:
d[k] = self[k]
except KeyError:
if fragile:
raise
return d
अब आप इसके साथ एक उप-शब्दकोष निकाल सकते हैं
orig_dict.subdict(keywords)
उपयोग के उदाहरण:
#
## our keywords are letters of the alphabet
keywords = 'abcdefghijklmnopqrstuvwxyz'
#
## our dictionary maps letters to their index
d = my_dict([(k,i) for i,k in enumerate(keywords)])
print('Original dictionary:\n%r\n\n' % (d,))
#
## constructing a sub-dictionary with good keywords
oddkeywords = keywords[::2]
subd = d.subdict(oddkeywords)
print('Dictionary from odd numbered keys:\n%r\n\n' % (subd,))
#
## constructing a sub-dictionary with mixture of good and bad keywords
somebadkeywords = keywords[1::2] + 'A'
try:
subd2 = d.subdict(somebadkeywords)
print("We shouldn't see this message")
except KeyError:
print("subd2 construction fails:")
print("\toriginal dictionary doesn't contain some keys\n\n")
#
## Trying again with fragile set to false
try:
subd3 = d.subdict(somebadkeywords, fragile=False)
print('Dictionary constructed using some bad keys:\n%r\n\n' % (subd3,))
except KeyError:
print("We shouldn't see this message")
यदि आप उपरोक्त सभी कोड चलाते हैं, तो आपको निम्न आउटपुट (स्वरूपण के लिए खेद है) को कुछ देखना चाहिए:
मूल शब्दकोष:
{'a': 0, 'c': 2, 'b': 1, 'e': 4, 'd': 3, 'g': 6, 'f': 5, 'i': 8, 'h': 7, 'k': 10, 'j': 9, 'm': 12, 'l': 11, 'o': 14, 'n': 13, 'q': 16 'p': 15, 's': 18, 'r': 17, 'u': 20, 't': 19, 'w': 22, 'v': 21, 'y': 24, 'x ': 23,' z ': 25}
विषम संख्या वाली कुंजियों से शब्दकोष:
{'a': 0, 'c': 2, 'e': 4, 'g': 6, 'i': 8, 'k': 10, 'm': 12, ' o ': 14,' q ': 16,' s ': 18,' u ': 20,' w ': 22,' y ': 24}
subd2 निर्माण विफल रहता है:
मूल शब्दकोश में कुछ कुंजियाँ नहीं हैं
कुछ खराब कुंजियों का उपयोग करके निर्मित शब्द:
{'b': 1, 'd': 3, 'f': 5, 'h': 7, 'j': 9, 'l': 11, 'n': 13, 'p': 15, 'r': 17, 't': 19, 'v': 21, 'x': 23, 'z': 25}
bigdict
नहीं होगा अगर शामिल नहीं हैk