ঠিক আছে, এটি এমন কিছু যা আমাকে কয়েকবার বিরক্ত করেছে, তাই জয়শকে এটি জিজ্ঞাসা করার জন্য আপনাকে ধন্যবাদ।
উপরের উত্তরগুলি কোনওর মতো সমাধানের মতো দুর্দান্ত বলে মনে হচ্ছে, তবে আপনি যদি নিজের কোডটিতে এটি ব্যবহার করেন তবে কার্যকারিতা আইএমএইচও র্যাপ করে বোঝা যায়। এছাড়াও, এখানে দুটি সম্ভাব্য ব্যবহারের কেস রয়েছে: একটি যেখানে আপনি সমস্ত কীওয়ার্ড মূল অভিধানে রয়েছেন কিনা তা নিয়ে যত্নশীল হন। এবং যেখানে আপনি না। উভয় সমানভাবে আচরণ করা ভাল হবে।
সুতরাং, আমার দ্বিগুণ দামের জন্য, আমি অভিধানের একটি উপ-শ্রেণীর লেখার পরামর্শ দিচ্ছি, যেমন
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")
আপনি যদি উপরের সমস্ত কোড চালনা করেন তবে আপনার নিম্নলিখিত আউটপুটটি দেখতে (এর মতো কিছু) দেখা উচিত (বিন্যাসের জন্য দুঃখিত):
মূল অভিধান:
{'ক': 0, 'সি': 2, 'বি': 1, 'ই': 4, 'ডি': 3, 'জি': 6, 'চ': 5, 'আমি': 8, 'এইচ': 7, 'কে': 10, 'জ': 9, 'এম': 12, 'এল': 11, 'ও': 14, 'এন': 13, 'কিউ': 16, 'পি': 15, 'গুলি': 18, 'আর': 17, 'ইউ': 20, 'টি': 19, 'ডব্লু': 22, 'ভি': 21, 'y': 24, 'x ': 23,' জেড ': 25
বিজোড় সংখ্যাযুক্ত কীগুলি থেকে অভিধান:
{'এ': 0, 'সি': 2, 'ই': 4, 'জি': 6, 'আই': 8, 'কে': 10, 'এম': 12, ' o ': 14,' q ': 16,' s ': 18,' u ': 20,' w ': 22,' y ': 24
সাবডি 2 নির্মাণ ব্যর্থ:
মূল অভিধানে কিছু কী থাকে না
কিছু খারাপ কী ব্যবহার করে অভিধানটি তৈরি করা হয়েছে:
{'বি': 1, 'ডি': 3, 'চ': 5, 'এইচ': 7, 'জ': 9, 'ল': 11, 'এন': 13, 'পি': 15, 'আর': 17, 'টি': 19, 'ভি': 21, 'এক্স': 23, 'জেড': 25}
bigdict
এতে না থাকলে ব্যর্থ হবেk