python - সফটওয - কিভাবে একটি পাইথন অভিধান থেকে একটি কী অপসারণ?




বাংলায় পাইথন (6)

"Del" শব্দ ব্যবহার করে:

del dict[key]

একটি অভিধান থেকে একটি কী মুছে ফেলার চেষ্টা করার সময়, আমি লিখতে:

if 'key' in myDict:
    del myDict['key']

এই কাজ করার একটি লাইন উপায় আছে কি?


আমরা নিম্নলিখিত ধাপে একটি পাইথন অভিধান থেকে একটি কী মুছে ফেলতে পারি।

del শব্দ ব্যবহার করে; যদিও আপনি প্রায় মত একই পদ্ধতির -

 myDict = {'one': 100, 'two': 200, 'three': 300 }
 print(myDict)  # {'one': 100, 'two': 200, 'three': 300}
 if myDict.get('one') : del myDict['one']
 print(myDict)  # {'two': 200, 'three': 300}

অথবা

আমরা নিম্নলিখিত মত করতে পারেন:

কিন্তু এক মনে রাখতে হবে যে, এই পদ্ধতিতে এটি অভিধান থেকে যেকোন কী মুছে ফেলবে না বরং যে অভিধান থেকে নির্দিষ্ট কী বাদ দেওয়া হবে । উপরন্তু, আমি লক্ষ্য করেছি যে এটি একটি myDict ফেরত দিয়েছে যা myDict মতোই আদেশ দেওয়া myDict

myDict = {'one': 100, 'two': 200, 'three': 300, 'four': 400, 'five': 500}
{key:value for key, value in myDict.items() if key != 'one'}

যদি আমরা শেল এ এটি চালাই, এটি {'five': 500, 'four': 400, 'three': 300, 'two': 200} মত কিছু চালানো হবে - লক্ষ্য করুন যে এটি আমার myDict মতো একই আদেশ নয়। আবার যদি আমরা myDict প্রিন্ট করার চেষ্টা myDict , তাহলে আমরা এই পদ্ধতির মাধ্যমে অভিধান থেকে বাদ দেওয়া সকল কী দেখতে পারি। যাইহোক, আমরা একটি পরিবর্তনশীল মধ্যে নিম্নলিখিত বিবৃতি বরাদ্দ করে একটি নতুন অভিধান করতে পারেন:

var = {key:value for key, value in myDict.items() if key != 'one'}

এখন আমরা যদি এটি মুদ্রণ করার চেষ্টা করি, তাহলে এটি পিতা-মাতার আদেশ অনুসরণ করবে:

print(var) # {'two': 200, 'three': 300, 'four': 400, 'five': 500}

অথবা

pop() পদ্ধতি ব্যবহার করে।

myDict = {'one': 100, 'two': 200, 'three': 300}
print(myDict)

if myDict.get('one') : myDict.pop('one')
print(myDict)  # {'two': 200, 'three': 300}

del এবং pop মধ্যে পার্থক্য হল, pop() পদ্ধতি ব্যবহার করে, আমরা যদি প্রয়োজন অনুসারে মূলত মানটি সঞ্চয় করতে পারি, নিম্নরূপ:

myDict = {'one': 100, 'two': 200, 'three': 300}
if myDict.get('one') : var = myDict.pop('one')
print(myDict) # {'two': 200, 'three': 300}
print(var)    # 100

আপনি এই দরকারী খুঁজে যদি, ভবিষ্যতে রেফারেন্সের জন্য this গাঁট ফর্ক।


এটি আমার সময় ঠিক করার জন্য কিছু সময় নিয়েছে my_dict.pop("key", None) করছে। তাই আমি অন্যকে গুগলের সময় বাঁচাতে একটি উত্তর হিসাবে এটি যুক্ত করব:

পপ (কী [ডিফল্ট])

যদি কী অভিধানে থাকে, এটি মুছে ফেলুন এবং তার মানটি ফেরত দিন, অন্যথায় ডিফল্ট ফিরে যান। যদি ডিফল্ট দেওয়া না হয় এবং কীটি অভিধানে না থাকে, তবে একটি KeyError উত্থাপিত হয়

Documentation


বিশেষ করে উত্তর দিতে "এই কাজ করার একটি লাইন উপায় আছে?"

if 'key' in myDict: del myDict['key']

... ভাল, আপনি জিজ্ঞাসা ;-)

তবে, আপনাকে বিবেচনা করা উচিত যে কোনও বস্তু থেকে কোনও বস্তু মুছে ফেলার এই উপায়ে পারমাণবিক নয় - এটি সম্ভব যে 'key' বিবৃতিতে if বিবৃতির সময় হতে পারে তবে del কার্যকর হওয়ার আগে মুছে ফেলা যেতে পারে, যা ক্ষেত্রে del হবে একটি KeyError সঙ্গে ব্যর্থ। এটি দেওয়া হলে, dict.pop বরাবর dict.pop বা কিছু ব্যবহার করা নিরাপদ হবে

try:
    del myDict['key']
except KeyError:
    pass

যা, অবশ্যই, অবশ্যই একটি এক-মাছ ধরার নৌকা হয় না।


যদি আপনাকে কোডের এক লাইনের মধ্যে একটি অভিধান থেকে অনেকগুলি কী মুছে ফেলতে হয় তবে আমি মনে করি মানচিত্র () ব্যবহার করে খুব সংক্ষিপ্ত এবং পাইথনিক পাঠযোগ্য।

myDict = {'a':1,'b':2,'c':3,'d':4}
map(myDict.pop, ['a','c']) # The list of keys to remove
>>> myDict
{'b': 2, 'd': 4}

এবং যদি আপনি এমন ত্রুটিগুলি ধরতে চান যেখানে আপনি অভিধানে নেই এমন একটি মান পপ করেন, তবে ম্যাপের ভিতরে Lambda ব্যবহার করুন:

map(lambda x: myDict.pop(x,None), ['a','c','e'])
[1, 3, None] # pop returns
>>> myDict
{'b': 2, 'd': 4}

এটা কাজ করে। এবং 'e' একটি ত্রুটি সৃষ্টি করে নি, যদিও আমার ডিক্টটিতে একটি 'ই' কী ছিল না।


dict.pop() ব্যবহার করুন:

my_dict.pop('key', None)

যদি my_dict[key] key বিদ্যমান থাকে এবং অন্যথায় None থাকে তবে এটি my_dict[key] ফেরত my_dict[key] । যদি দ্বিতীয় প্যারামিটার নির্দিষ্ট না হয় (যেমন my_dict.pop('key') ) এবং key বিদ্যমান না থাকে, একটি key KeyError উত্থাপিত হয়।





unset