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



4 Answers

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

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

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

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

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

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

python dictionary unset

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

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

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




উপরে বর্ণিত তিনটি সমাধান সময়।

ছোট অভিধান:

>>> import timeit
>>> timeit.timeit("d={'a':1}; d.pop('a')")
0.23399464370632472
>>> timeit.timeit("d={'a':1}; del d['a']")
0.15225347193388927
>>> timeit.timeit("d={'a':1}; d2 = {key: val for key, val in d.items() if key != 'a'}")
0.5365207354998063

বৃহত্তর অভিধান:

>>> timeit.timeit("d={nr: nr for nr in range(100)}; d.pop(3)")
5.478138627299643
>>> timeit.timeit("d={nr: nr for nr in range(100)}; del d[3]")
5.362219126590048
>>> timeit.timeit("d={nr: nr for nr in range(100)}; d2 = {key: val for key, val in d.items() if key != 3}")
13.93129749387532



ব্যবহার করুন:

>>> if myDict.get(key): myDict.pop(key)

অন্য উপায়:

>>> {k:v for k, v in myDict.items() if k != 'key'}

আপনি শর্তাবলী মুছে ফেলতে পারেন। 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 গাঁট ফর্ক।




Related