python - একট - নেটওয়ার্কগুলিতে




একটি প্রদত্ত কী ইতিমধ্যে অভিধানে বিদ্যমান কিনা তা পরীক্ষা করুন (13)

EAFP ব্যবহার করার বিষয়ে কী (অনুমতি চেয়ে ক্ষমা চাইতে সহজ):

try:
   blah = dict["mykey"]
   # key exists in dict
except KeyError:
   # key doesn't exist in dict

অন্যান্য এসও পোস্ট দেখুন:

Python বা বনাম চেষ্টা করুন ব্যবহার করে

পাইথন সদস্য অস্তিত্ব জন্য চেক করা হচ্ছে

কীটি মানটির আপডেট করার আগে অভিধানে একটি কী উপস্থিত থাকলে আমি পরীক্ষা করতে চাই। আমি নিম্নলিখিত কোড লিখেছিলাম:

if 'key1' in dict.keys():
  print "blah"
else:
  print "boo"

আমি এই কাজটি সম্পন্ন করার সেরা উপায় নয়। অভিধান একটি কী জন্য পরীক্ষা করার জন্য একটি ভাল উপায় আছে?


আচ্ছা .. আপনি একটি পরিচিতি বা তথ্য একটি উপাদান এর অস্তিত্ব অনুসন্ধান করা মানে সবকিছু (অন্তত unordered তালিকা যেমন dict.keys জন্য) মাধ্যমে যাচ্ছে মানে। সুতরাং পরিবর্তে ব্যতিক্রম এবং ত্রুটি যা সাধারণত ঘটেছে ব্যবহার করে আমরা যে জটিলতা এড়াতে পারেন ...

d={1:'a',2:'b'}
try:
    needed=d[3]
    print(needed)
except:
    print("Key doesnt exist")

আপনি এটি ছোট করতে পারেন:

if 'key1' in dict:
    ...

তবে, এটি একটি অঙ্গরাগ উন্নতি শ্রেষ্ঠ। কেন আপনি বিশ্বাস করেন যে এটি সর্বোত্তম উপায় নয়?


আপনি কি কল করতে হবে না:

if 'key1' in dict:
  print "blah"
else:
  print "boo"

যেহেতু এটি রৈখিক অনুসন্ধান করার বিরোধিতা করে অভিধানের হ্যাশিং ব্যবহার করে এটি আরও faster হবে, যা কলিং কীগুলি করবে।


আমি পরিবর্তে setdefault পদ্ধতি ব্যবহার করে সুপারিশ করবে। এটা আপনি চান সবকিছু করতে হবে মত শোনাচ্ছে।

>>> d = {'foo':'bar'}
>>> q = d.setdefault('foo','baz') #Do not override the existing key
>>> print q #The value takes what was originally in the dictionary
bar
>>> print d
{'foo': 'bar'}
>>> r = d.setdefault('baz',18) #baz was never in the dictionary
>>> print r #Now r has the value supplied above
18
>>> print d #The dictionary's been updated
{'foo': 'bar', 'baz': 18}

কেন শুধু has_key () পদ্ধতি ব্যবহার করবেন না।

a = {}
a.has_key('b') => #False

a['b'] = 8
a.has_key('b') => #True

চেক করার জন্য আপনি has_key() পদ্ধতি ব্যবহার করতে পারেন

if dict.has_key('key1'):
   print "it is there"

আপনি একটি মান চান তাহলে আপনি get() পদ্ধতি ব্যবহার করতে পারেন

a = dict.get('key1', expeced_type)

যদি আপনি টুপল বা তালিকা বা অভিধান বা কোনও স্ট্রিং ডিফল্ট মান হিসাবে ডিফল্ট মান হিসাবে চান তবে তারপরে get() পদ্ধতিটি ব্যবহার করুন

a = dict.get('key1', {}).get('key2', [])

টার্নারি অপারেটর ব্যবহার করে:

message = "blah" if 'key1' in dict else "booh"
print(message)

পাইথন অভিধানে একটি পেতে ('কী', ডিফল্ট) পদ্ধতি আছে। সুতরাং কোন কী নেই যদি আপনি একটি ডিফল্ট মান সেট করতে পারেন।

values = {...}
myValue = values.get('Key', None)

শুধু একটি FYI ক্রিস যোগ। বি (সেরা উত্তর):

d = defaultdict(int)

পাশাপাশি কাজ করে; এর কারণ হল কলিং int() 0 যা defaultdict দৃশ্যগুলির পিছনে (যখন একটি অভিধান তৈরি করার সময়) থাকে, তাই ডকুমেন্টেশনের নাম "ফ্যাক্টরি ফাংশন"।


in একটি dict একটি কী অস্তিত্ব জন্য পরীক্ষা করার উদ্দেশ্যে উপায়।

d = dict()

for i in xrange(100):
    key = i % 10
    if key in d:
        d[key] += 1
    else:
        d[key] = 1

আপনি ডিফল্ট চেয়েছিলেন, আপনি সর্বদা dict.get() ব্যবহার করতে পারেন:

d = dict()

for i in xrange(100):
    key = i % 10
    d[key] = d.get(key, 0) + 1

... এবং যদি আপনি সর্বদা কোন কীটির ডিফল্ট মান নিশ্চিত করতে চান তবে আপনি collections মডিউল থেকে defaultdict ব্যবহার করতে পারেন, যেমন:

from collections import defaultdict

d = defaultdict(lambda: 0)

for i in xrange(100):
    d[i % 10] += 1

... কিন্তু সাধারণভাবে, কীওয়ার্ডটি এটিকে করার সর্বোত্তম উপায়।


print dict.get('key1', 'blah')

নির্দেশের মানগুলির জন্য বোয়ো মুদ্রণ করবে না, বরং এর অস্তিত্ব নিশ্চিত করার জন্য কী 1 এর মান মুদ্রণ করে লক্ষ্য অর্জন করবে।


আপনি ফলাফল পেতে পারেন উপায় যা:

যা ভাল 3 জিনিস উপর নির্ভরশীল:

  1. অভিধানটি সাধারণত 'কী থাকে' বা 'সাধারণত কী নেই'।
  2. আপনি যদি শর্তাবলী ব্যবহার করার ইচ্ছা করেন ... else ... elseif ... অন্যথায়?
  3. অভিধান কত বড়?

আরও পড়ুন: http://paltman.com/try-except-performance-in-python-a-simple-test/

'ইন' বা 'if' এর পরিবর্তে চেষ্টা / ব্লক ব্যবহার করুন:

try:
    my_dict_of_items[key_i_want_to_check]
except KeyError:
    # Do the operation you wanted to do for "key not present in dict".
else:
    # Do the operation you wanted to do with "key present in dict."




dictionary