python - একটি অভিধানে নতুন কী যোগ করুন?




dictionary (9)

"এটি তৈরি হওয়ার পরে পাইথন অভিধানে কী যোগ করা সম্ভব? এটি একটি .add () পদ্ধতি বলে মনে হচ্ছে না।"

হ্যাঁ এটি সম্ভব, এবং এতে এমন একটি পদ্ধতি রয়েছে যা এটি প্রয়োগ করে, তবে আপনি সরাসরি এটি ব্যবহার করতে চান না।

কিভাবে এবং কিভাবে এটি ব্যবহার করবেন না তা প্রদর্শনের জন্য, আসুন শব্দের আক্ষরিক সঙ্গে একটি খালি স্বর তৈরি করি, {} :

my_dict = {}

সেরা অনুশীলন 1: সাবস্ক্রিপশন নোটেশন

একটি নতুন কী এবং মান দিয়ে এই নির্দেশটি আপডেট করতে, আপনি সাবস্ক্রিপশন নোটেশন (এখানে ম্যাপিং দেখুন) ব্যবহার করতে পারেন যা আইটেম অ্যাসাইনমেন্ট প্রদান করে:

my_dict['new key'] = 'new value'

my_dict এখন

{'new key': 'new value'}

সেরা অনুশীলন 2: update পদ্ধতি - 2 উপায়

আমরা update পদ্ধতি ব্যবহার করে একাধিক মানগুলির সাথে দক্ষতার সাথে স্বতন্ত্রভাবে আপডেট করতে পারি। আমরা এখানে অপ্রয়োজনীয়ভাবে অতিরিক্ত dict তৈরি করতে পারি, তাই আমরা আশা করি আমাদের dict ইতিমধ্যে তৈরি করা হয়েছে এবং এটি অন্য কোনও উদ্দেশ্যে ব্যবহৃত হয়েছে বা ব্যবহার করা হয়েছে:

my_dict.update({'key 2': 'value 2', 'key 3': 'value 3'})

my_dict এখন

{'key 2': 'value 2', 'key 3': 'value 3', 'new key': 'new value'}

আপডেট পদ্ধতির সাথে এটি করার আরেকটি কার্যকরী উপায় কীওয়ার্ড আর্গুমেন্টগুলির সাথে হয় তবে যেহেতু তাদের বৈধ পাইথন শব্দগুলি থাকতে হবে, আপনার কাছে স্পেস বা বিশেষ প্রতীক থাকতে পারে না বা নামটি দিয়ে নাম শুরু করতে পারে তবে অনেকেই এটিটিকে আরও পাঠযোগ্য একটি dict জন্য কী তৈরি করতে, এবং এখানে আমরা অবশ্যই একটি অতিরিক্ত অপ্রয়োজনীয় dict তৈরি করতে এড়াতে:

my_dict.update(foo='bar', foo2='baz')

এবং my_dict এখন:

{'key 2': 'value 2', 'key 3': 'value 3', 'new key': 'new value', 
 'foo': 'bar', 'foo2': 'baz'}

তাই এখন আমরা একটি dict আপডেট করার তিনটি পাইথনিক পদ্ধতি আচ্ছাদিত করেছি।

ম্যাজিক পদ্ধতি, __setitem__ , এবং কেন এড়ানো উচিত

আপনি ব্যবহার করা উচিত না যে একটি dict আপডেট করার আরেকটি উপায়, যা __setitem__ পদ্ধতি ব্যবহার করে। কীভাবে একটি __setitem__ পদ্ধতি ব্যবহার করতে পারে তা __setitem__ একটি কী-মান জোড়া যুক্ত করতে পারে এবং এটি ব্যবহার করার দরিদ্র কর্মক্ষমতা প্রদর্শনের একটি উদাহরণ এখানে দেওয়া হয়েছে:

>>> d = {}
>>> d.__setitem__('foo', 'bar')
>>> d
{'foo': 'bar'}


>>> def f():
...     d = {}
...     for i in xrange(100):
...         d['foo'] = i
... 
>>> def g():
...     d = {}
...     for i in xrange(100):
...         d.__setitem__('foo', i)
... 
>>> import timeit
>>> number = 100
>>> min(timeit.repeat(f, number=number))
0.0020880699157714844
>>> min(timeit.repeat(g, number=number))
0.005071878433227539

সুতরাং আমরা দেখতে পাচ্ছি যে সাবস্ক্রিপ্ট নোটেশনটি __setitem__ ব্যবহার করার চেয়ে আসলেই অনেক দ্রুত। Pythonic জিনিসটি, অর্থাৎ, ব্যবহার করা হয় উদ্দেশ্যে উপায় ভাষা ব্যবহার করে, সাধারণত উভয় আরও পঠনযোগ্য এবং computationally দক্ষ।

এটি তৈরি হওয়ার পরে পাইথন অভিধানে কী যোগ করা সম্ভব? এটি একটি। .add() পদ্ধতি বলে মনে হচ্ছে না।


অনেক উত্তর এবং এখনও সবাই অদ্ভুতভাবে নামকরণ, অদ্ভুত আচরণ, এবং এখনও এখনও সহজ dict.setdefault()

এই

value = my_dict.setdefault(key, default)

মূলত শুধু এই কাজ করে:

try:
    value = my_dict[key]
except KeyError: # key not found
    value = my_dict[key] = default

যেমন

>>> mydict = {'a':1, 'b':2, 'c':3}
>>> mydict.setdefault('d', 4)
4 # returns new value at mydict['d']
>>> print(mydict)
{'a':1, 'b':2, 'c':3, 'd':4} # a new key/value pair was indeed added
# but see what happens when trying it on an existing key...
>>> mydict.setdefault('a', 111)
1 # old value was returned
>>> print(mydict)
{'a':1, 'b':2, 'c':3, 'd':4} # existing key was ignored

আপনি এক তৈরি করতে পারেন

class myDict(dict):

    def __init__(self):
        self = dict()

    def add(self, key, value):
        self[key] = value

## example

myd = myDict()
myd.add('apples',6)
myd.add('bananas',3)
print(myd)

দেয়

>>> 
{'apples': 6, 'bananas': 3}

আপনি যদি অভিধানে একটি অভিধান যুক্ত করতে চান তবে আপনি এটি এভাবে করতে পারেন।

উদাহরণ: আপনার অভিধান এবং সাব অভিধানে একটি নতুন এন্ট্রি যোগ করুন

dictionary = {}
dictionary["new key"] = "some new entry" # add new dictionary entry
dictionary["dictionary_within_a_dictionary"] = {} # this is required by python
dictionary["dictionary_within_a_dictionary"]["sub_dict"] = {"other" : "dictionary"}
print (dictionary)

আউটপুট:

{'new key': 'some new entry', 'dictionary_within_a_dictionary': {'sub_dict': {'other': 'dictionarly'}}}

দ্রষ্টব্য: পাইথন আপনাকে প্রথমে একটি সাব যোগ করার প্রয়োজন

dictionary["dictionary_within_a_dictionary"] = {}

এন্ট্রি যোগ করার আগে।


আমি পাইথন অভিধান সম্পর্কে তথ্য একত্রিত করার মত অনুভব করছি:

একটি খালি অভিধান তৈরি করা

data = {}
# OR
data = dict()

প্রাথমিক মানের সঙ্গে একটি অভিধান তৈরি করা

data = {'a':1,'b':2,'c':3}
# OR
data = dict(a=1, b=2, c=3)
# OR
data = {k: v for k, v in (('a', 1),('b',2),('c',3))}

একটি একক মান সন্নিবেশ / আপডেট করা হচ্ছে

data['a']=1  # Updates if 'a' exists, else adds 'a'
# OR
data.update({'a':1})
# OR
data.update(dict(a=1))
# OR
data.update(a=1)

ঢোকানো / একাধিক মান আপডেট করা হচ্ছে

data.update({'c':3,'d':4})  # Updates 'c' and adds 'd'

মূল পরিবর্তন না করে একটি মার্জড অভিধান তৈরি করা

data3 = {}
data3.update(data)  # Modifies data3, not data
data3.update(data2)  # Modifies data3, not data2

অভিধান আইটেম মুছে ফেলা হচ্ছে

del data[key]  # Removes specific element in a dictionary
data.pop(key)  # Removes the key & returns the value
data.clear()  # Clears entire dictionary

একটি কী ইতিমধ্যে অভিধান মধ্যে চেক করুন

key in data

একটি অভিধানে জোড়া মাধ্যমে বিক্ষিপ্ত

for key in data: # Iterates just through the keys, ignoring the values
for key, value in d.items(): # Iterates through the pairs
for key in d.keys(): # Iterates just through key, ignoring the values
for value in d.values(): # Iterates just through value, ignoring the keys

2 তালিকা থেকে একটি অভিধান তৈরি করুন

data = dict(zip(list_with_keys, list_with_values))

আরো যোগ করতে বিনা দ্বিধায়!


আসুন আপনি জাহির করেন যে আপনি অপরিবর্তনীয় বিশ্বের বাস করতে চান এবং মূলটি সংশোধন করতে চান না তবে একটি নতুন dict তৈরি করতে চান যা dict একটি নতুন কী যোগ করার ফলাফল।

পাইথন 3.5+ এ আপনি করতে পারেন:

params = {'a': 1, 'b': 2}
new_params = {**params, **{'c': 3}}

Python 2 সমতুল্য হয়:

params = {'a': 1, 'b': 2}
new_params = dict(params, **{'c': 3})

এসবের পরে:

params এখনও {'a': 1, 'b': 2} সমান

এবং

new_params সমান {'a': 1, 'b': 2, 'c': 3}

এমন সময় থাকবে যখন আপনি মূল পরিবর্তন করতে চান না (আপনি শুধুমাত্র আসল যুক্ত করার ফলাফল চান)। আমি এই নিম্নলিখিত একটি রিফ্রেশ বিকল্প খুঁজে পেতে:

params = {'a': 1, 'b': 2}
new_params = params.copy()
new_params['c'] = 3

অথবা

params = {'a': 1, 'b': 2}
new_params = params.copy()
new_params.update({'c': 3})

রেফারেন্স: https://.com/a/2255892/514866


এই জনপ্রিয় প্রশ্নটি a এবং b মার্জ করার কার্যকরী পদ্ধতিগুলিকে সম্বোধন করে

এখানে আরো কিছু সহজ পদ্ধতি (পাইথন 3 পরীক্ষিত) ...

c = dict( a, **b ) ## see also https://.com/q/2255878
c = dict( list(a.items()) + list(b.items()) )
c = dict( i for d in [a,b] for i in d.items() )

দ্রষ্টব্য: উপরের পদ্ধতিটি শুধুমাত্র কাজ করে যদি বোগুলির কী স্ট্রিং থাকে।

একটি একক উপাদান যুক্ত বা সংশোধন করতে , b অভিধানটি শুধুমাত্র একটি উপাদান ধারণ করবে ...

c = dict( a, **{'d':'dog'} ) ## returns a dictionary based on 'a'

এটি সমতুল্য

def functional_dict_add( dictionary, key, value ):
   temp = dictionary.copy()
   temp[key] = value
   return temp

c = functional_dict_add( a, 'd', 'dog' )

dictionary[key] = value

>>> x = {1:2}
>>> print x
{1: 2}

>>> x.update({3:4})
>>> print x
{1: 2, 3: 4}




dictionary