আমি কীভাবে একটি অভিধানে নতুন কী যুক্ত করতে পারি?


2616

পাইথন অভিধান তৈরি হওয়ার পরে কী কী যুক্ত করা সম্ভব?

এটির কোনও .add()পদ্ধতি আছে বলে মনে হয় না ।


25
আপনি এখানে একটি কী যোগ করার জন্য কিভাবে চিন্তা করার চেষ্টা হয় এবং একটি ফিরতি নতুন অভিধান, আপনি python3.5 + এ এটা করতে পারেন: {**mydict, 'new_key': new_val}
cs95

হয় গ্রহণযোগ্য উত্তরটি ব্যবহার করুন: d ['mynewkey'] = 'mynewvalue' বা আপনি ভাল = d.setdefault ('mynewkey', 'mynewvalue') ব্যবহার করতে পারেন
ওল '

উত্তর:


3395
d = {'key': 'value'}
print(d)
# {'key': 'value'}
d['mynewkey'] = 'mynewvalue'
print(d)
# {'key': 'value', 'mynewkey': 'mynewvalue'}

107
ব্যাখ্যাটি হ'ল: আপনি একটি অভিধানে একটি নতুন কী-মান জোড় তৈরি করে সেই কীটির জন্য একটি মান নির্ধারণ করে। যদি কীটি বিদ্যমান না থাকে তবে এটি যুক্ত করা হয় এবং সেই মানটির দিকে নির্দেশ করে। যদি এটি বিদ্যমান থাকে তবে বর্তমান মানটি এটি নির্দেশ করে ওভাররাইট করা হয়।
আর নভেগা

9
এই এবং .update()পদ্ধতির মধ্যে পার্থক্য কী ? কখন ভাল হয়?
হেগাশ

13
@ সিনগ্যাক্সটি d[key]=valসংক্ষিপ্ত আকারের হিসাবে এটি হ'ল সংক্ষিপ্ত আকারে এবং যেকোন বস্তুকে কী হিসাবে পরিচালনা করতে পারে (যতক্ষণ না এটি হ্যাশযোগ্য) কেবলমাত্র একটি মান নির্ধারণ করে, তবে .update(key1=val1, key2=val2)আপনি যদি একই সাথে একাধিক মান সেট করতে চান তবে এটি আরও ভাল স্ট্রিং (যেহেতু কাওয়ার্গগুলি স্ট্রিংয়ে রূপান্তরিত হয়)। dict.updateঅন্য একটি অভিধানও নিতে পারে, তবে আমি ব্যক্তিগতভাবে অন্য একটি আপডেট করার জন্য স্পষ্টভাবে একটি নতুন অভিধান তৈরি না করা পছন্দ করি।
বিগুসাচ

এটি ব্যবহার করে দেখুন, এখানে একটি উদাহরণ রয়েছে: repl.it/@SmaMa/Add-key-to-dict
Sma Ma

আমি কীভাবে কোনও নেস্টেড ডিকটিতে একটি উপাদান যুক্ত করতে পারি। পিএইচপি $foo[ ] = [ . . . . ]
-এর

1040

একসাথে একাধিক কী যুক্ত করতে, ব্যবহার করুন dict.update():

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

>>> d = {3:4, 5:6, 7:8}
>>> x.update(d)
>>> print(x)
{1: 2, 3: 4, 5: 6, 7: 8}

একটি একক কী যুক্ত করার জন্য, স্বীকৃত উত্তরের কম কম্পিউটেশনাল ওভারহেড রয়েছে।


13
এটি কেবল একটি কী আপডেট করার জন্য অভিধান তৈরি করতে খুব অদক্ষ। আপনার যদি 1 টির বেশি কী থাকে তবেই এটি করুন (উপরে একটি চৌম্বক হতে পারে যার উপরে ডিক তৈরি করা ভাল)
জিন-ফ্রানসোয়া ফ্যাব্রে

10
@ জিন-ফ্রেঞ্চোইস ফ্যাবরে এটি উদাহরণ কোড। আপনার সত্যিকারের উত্তরগুলি সমস্ত ক্ষেত্রে coveringেকে রাখার মতো আচরণ করা উচিত নয়।
রবার্ট ব্রিসিটা

1
এটি ভুল ধারণা দেয় যে এটি একটি কী যুক্ত করার পছন্দসই উপায়।
জিন-ফ্রান্সোইস ফ্যাব্রে

@ জিন- ফরাসোইসফ্যাব্রে যেহেতু পাইথন ৩.7++ তে ডিক্ট অর্ডার দেওয়ার নিশ্চয়তা রয়েছে (এবং এটি 3.6+ এ সরবরাহ করা হয়েছে) , যখন অর্ডার জরুরী তখন একক কী যুক্ত করার পক্ষে এটি একটি পছন্দনীয় উপায় হতে পারে ।
শে

যদি আপনার তৈরি করা মত অন্য কী মূল্য শেষ অত্যধিক। যাইহোক উত্তর সম্পাদনা করা হয়েছে এবং এখন অনেক ভাল। অভিধানের সাহায্যে আপডেট করা ভাল হয় যখন সম্ভবত এটিতে অনেক আইটেম থাকে। x[-1] = 44-1
জাঁ ফ্রাসোয়া Fabre

925

পাইথন অভিধানগুলি সম্পর্কে একত্রীকরণ করার মত তথ্যটি আমার মনে হচ্ছে:

একটি খালি অভিধান তৈরি করা হচ্ছে

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

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

data = dict(zip(list_with_keys, list_with_values))

পাইথন 3.5 তে নতুন

অরিজিনাল সংশোধন না করে মার্জড ডিকশনারি তৈরি করা:

এটি অভিধানকে আনপ্যাকিং নামে একটি নতুন বৈশিষ্ট্য ব্যবহার করে ।

data = {**data1, **data2, **data3}

পাইথন ৩.৯-এ নতুন

বিদ্যমান অভিধানের মান আপডেট করুন বা যুক্ত করুন

আপডেটের অপারেটর |= এখন অভিধানের জন্য কাজ করে:

data |= {'c':3,'d':4}

অরিজিনাল সংশোধন না করে মার্জড ডিকশনারি তৈরি করা হচ্ছে

একত্রীকরণ অপারেটর | এখন অভিধানের জন্য কাজ করে:

data = data1 | {'c':3,'d':4}

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


145

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

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

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

my_dict = {}

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

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

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

my_dict এখন:

{'new key': 'new value'}

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

আমরা একাধিক মান দক্ষতার পাশাপাশি ব্যবহার করে অভি আপডেট করতে পারেন পদ্ধতি । আমরা এখানে অযৌক্তিকভাবে একটি অতিরিক্ত তৈরি করতে পারি, তাই আমরা আশা করি যে ইতিমধ্যে আমাদের তৈরি করা হয়েছে এবং অন্য উদ্দেশ্যে এসেছিল বা ব্যবহৃত হয়েছিল:updatedictdict

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:

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__কী কী কীতে কী-মূল্যের জুটি যুক্ত করার জন্য পদ্ধতিটি ব্যবহার করতে পারে dictএবং এর ব্যবহারের দুর্বল পারফরম্যান্সের একটি উদাহরণ এখানে রয়েছে :

>>> 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__। পাইথোনিক জিনিসটি করা, অর্থাত্ ভাষাটি যেভাবে ব্যবহারের উদ্দেশ্যে করা হয়েছিল সেভাবে ব্যবহার করা সাধারণত পাঠযোগ্য এবং গণনার দিক থেকে উভয়ই দক্ষ।


1
পার্থক্যটি কম বরং কম চিহ্নিত হয়েছে 2020 (আমার মেশিনে, 1.35 এমএস সাবস্ক্রিপিং বনাম 2 এমএসের জন্য d.__setitem__), যদিও উপসংহারটি (এবং বিশেষত শেষ বাক্যটি) যথাযথ থেকে যায়। লুপের বাইরে থাকা পদ্ধতিটির নাম অনুসন্ধানের সময়টি হ্রাস করে প্রায় 1.65 এমএস হয়ে যায়; বাকি পার্থক্য সম্ভবত অপ্রয়োজনীয় পাইথন কল প্রক্রিয়া ওভারহেডের কারণে সম্ভবত।
হোল্ডেনওয়েব


58

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

উদাহরণ: আপনার অভিধান ও উপ অভিধানে একটি নতুন এন্ট্রি যুক্ত করুন

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"] = {}

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


13
এটি php.net ম্যানুয়াল পৃষ্ঠাগুলিতে বেশিরভাগ মন্তব্য হিসাবে প্রশ্ন করা প্রশ্নটির অপ্রাসঙ্গিক ...
এরিক কাপলুন

2
আপনাকে এক লাইনে এটি করা বন্ধ করার কিছুই নেই: dictionary = {"dictionary_within_a_dictionary": {"sub_dict": {"other" : "dictionary"}}}(বা যদি dictionaryইতিমধ্যে ডিক হয়, dictionary["dictionary_within_a_dictionary"] = {"sub_dict": {"other" : "dictionary"}})
ক্রিস

43

গোঁড়া সিনট্যাক্সটি হল d[key] = value, তবে আপনার কীবোর্ডে বর্গাকার বন্ধনী কীগুলি অনুপস্থিত থাকলে আপনি এটি করতে পারেন:

d.__setitem__(key, value)

প্রকৃতপক্ষে, সংজ্ঞা __getitem__এবং __setitem__পদ্ধতিগুলি হল আপনি কীভাবে বর্গাকার বন্ধনী সিনট্যাক্সটিকে নিজের শ্রেণির সমর্থন করতে পারেন। Https://python.developpez.com/cours/DiveIntoPython/php/endiveintopython/object_oriented_framework/spected_class_methods.php দেখুন


16
আমার কীবোর্ডে বন্ধনী কীগুলি ছাড়াই অজগর দিয়ে প্রোগ্রাম করা আমার পক্ষে অত্যন্ত কঠিন হবে।
বোবোর্ট

2
একটি তালিকা বোধের মধ্যে অভিধানের মানগুলি নির্ধারণ করতে আমি এই একমাত্র উপায় খুঁজে পেলাম। ধন্যবাদ
খ্রিস্ট স্টিভেনস

3
@ ক্রিসস্টেভেনস যদি আপনি কোন হ্যাক ব্যবহার করেছেন এমন কোনও উপলব্ধির জন্য কোনও মান নির্ধারণ করতে চান [a for a in my_dict if my_dict.update({'a': 1}) is None]
জেরেমি লোগান

কৌতূহল ... এটি (যেমন - বর্গাকার বন্ধনীগুলি নিখোঁজ হওয়া) সাধারণ কি?
এলেস্টার তানেক জাভাস মিরাজ

@ ক্রিশস্টেভেনস @ জেরেমি লোগান যখন আপনি ডিক বোঝার ব্যবহার করতে পারবেন তখন কেন একটি তালিকা বোধগম্যতা ব্যবহার করবেন? {v: k for k, v in my_dict.items() if <some_conditional_check>}
শে

36

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

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}

31

এই জনপ্রিয় প্রশ্ন ঠিকানাগুলি কার্মিক অভিধান মার্জ পদ্ধতি aএবং b

এখানে আরও কিছু সরল পদ্ধতি রয়েছে (পাইথন 3 এ পরীক্ষিত) ...

c = dict( a, **b ) ## see also https://stackoverflow.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স্ট্রিং থাকে তবে কাজ করে।

একটি একক উপাদান যোগ করতে অথবা পরিবর্তন করতে , 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' )

8
পাইথনের বিডিএফএল থেকে প্রথম পদ্ধতি সম্পর্কে আকর্ষণীয় মন্তব্য ( এখানে )।
নোবার

c = dict( a, **{'d':'dog'} )c = dict(a, d='dog')যতক্ষণ না কীগুলি জানা থাকে এবং গণনা করা হয় না ততই আরও ভাল লেখা হবে ।
হোল্ডেনওয়েব

21

আসুন আপনি ভেবে নিন যে আপনি অপরিবর্তনীয় বিশ্বে বেঁচে থাকতে চান এবং আসলটি পরিবর্তন করতে চান না তবে একটি নতুন তৈরি করতে চান dictযা মূলটিতে একটি নতুন কী যুক্ত করার ফলাফল is

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

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

পাইথন 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://stackoverflow.com/a/2255892/514866


2
আমার একজন প্রো-ফাংশনাল প্রোগ্রামিং সহকর্মীর সাথে দীর্ঘ কথোপকথনে একটি ভাল পয়েন্ট সামনে এলো। উপরের পদ্ধতির একটি নেতিবাচক দিকটি হ'ল যদি কেউ কোডটি পড়ছেন তিনি **পাইথনের সাথে পরিচিত না হন (অনেকেই নেই) তবে এটি কী হবে তা স্পষ্ট হবে না। এমন সময় রয়েছে যখন আপনি আরও ভাল পঠনযোগ্যতার জন্য কম কার্যকরী পদ্ধতির পক্ষে থাকবেন।
ক্যাম্পিটারসন

5
আমাদের পাঠকরা পাইথন ভাষার কোন উপসেটটি জানেন তা আমরা ধারণা করতে পারি না, সুতরাং তারা পুরো ভাষাটি জানে তাই অনুমান করার পক্ষে এটি ন্যায়সঙ্গত যে তারা যে অংশগুলি না করে তার জন্য ডক্সে অনুসন্ধান করে।
গ্যাব্রিয়েল

17

এতগুলি উত্তর এবং এখনও প্রত্যেকে অদ্ভুতভাবে নাম দেওয়া, অদ্ভুত আচরণ এবং এখনও কার্যকর বলে ভুলে গিয়েছিল 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

5

আপনি যদি দুটি অভিধানে যোগ দিচ্ছেন না, তবে কোনও অভিধানে নতুন কী-মান জোড় যুক্ত করছেন, তবে সাবস্ক্রিপ্ট নোটেশনটি ব্যবহার করা সবচেয়ে ভাল উপায় বলে মনে হচ্ছে।

import timeit

timeit.timeit('dictionary = {"karga": 1, "darga": 2}; dictionary.update({"aaa": 123123, "asd": 233})')
>> 0.49582505226135254

timeit.timeit('dictionary = {"karga": 1, "darga": 2}; dictionary["aaa"] = 123123; dictionary["asd"] = 233;')
>> 0.20782899856567383

তবে, আপনি যদি যুক্ত করতে চান, উদাহরণস্বরূপ, হাজার হাজার নতুন কী-মান জুড়ি, আপনার update()পদ্ধতিটি বিবেচনা করা উচিত ।


3

আমি মনে করি এটা আরো পাইথন আউট বিন্দু দরকারী হবে collectionsমডিউল যে অনেক দরকারী অভিধান উপশ্রেণী এবং চাদরে যে প্রক্রিয়া সহজ নিয়ে গঠিত উপরন্তু এবং তথ্য ধরনের পরিবর্তন অভিধানে , নির্দিষ্টভাবে defaultdict:

ডিক সাবক্লাস যা অনুপস্থিত মান সরবরাহ করার জন্য একটি ফ্যাক্টরি ফাংশন কল করে

এটি বিশেষত কার্যকর যদি আপনি অভিধানে কাজ করে যা সর্বদা একই ডেটা ধরণের বা কাঠামোগুলির সমন্বয়ে থাকে, উদাহরণস্বরূপ তালিকার একটি অভিধান dictionary

>>> from collections import defaultdict
>>> example = defaultdict(int)
>>> example['key'] += 1
>>> example['key']
defaultdict(<class 'int'>, {'key': 1})

কীটি এখনও বিদ্যমান না থাকলে, defaultdictপ্রদত্ত মান (আমাদের ক্ষেত্রে 10) অভিধানের প্রাথমিক মান হিসাবে অর্পণ করে (প্রায়শই লুপগুলির অভ্যন্তরে ব্যবহৃত হয়)। এই অপারেশনটি তাই দুটি কাজ করে: এটি অভিধানে একটি নতুন কী যুক্ত করে (প্রশ্ন অনুসারে) এবং কীটি এখনও উপস্থিত না থাকলে মান নির্ধারণ করে। মানক অভিধানের সাহায্যে, এটি একটি ত্রুটি বাড়াতে +=পারে কারণ অপারেশনটি এমন কোনও মান অ্যাক্সেস করার চেষ্টা করছে যা এখনও বিদ্যমান নেই:

>>> example = dict()
>>> example['key'] += 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'key'

ব্যবহার না করে defaultdictএকটি নতুন উপাদান যুক্ত করার কোডের পরিমাণ অনেক বেশি হবে এবং সম্ভবত এরকম কিছু দেখাচ্ছে:

# This type of code would often be inside a loop
if 'key' not in example:
    example['key'] = 0  # add key and initial value to dict; could also be a list
example['key'] += 1  # this is implementing a counter

defaultdictজটিল ডেটা যেমন যেমন listএবং এর সাথেও ব্যবহার করা যেতে পারে set:

>>> example = defaultdict(list)
>>> example['key'].append(1)
>>> example
defaultdict(<class 'list'>, {'key': [1]})

একটি উপাদান যুক্ত করা স্বয়ংক্রিয়ভাবে তালিকাটিকে আরম্ভ করে।


3

এখানে অন্য উপায় যা আমি এখানে দেখিনি:

>>> foo = dict(a=1,b=2)
>>> foo
{'a': 1, 'b': 2}
>>> goo = dict(c=3,**foo)
>>> goo
{'c': 3, 'a': 1, 'b': 2}

অভিধানের পুনর্গঠন করতে আপনি অভিধান নির্মাণকারী এবং অন্তর্নিহিত সম্প্রসারণ ব্যবহার করতে পারেন। তদুপরি, মজার বিষয় হল, অভিধানটি নির্মাণের সময় অবস্থানিক ক্রম নিয়ন্ত্রণের জন্য এই পদ্ধতিটি ব্যবহার করা যেতে পারে ( পাইথন পরবর্তী post.6 )। প্রকৃতপক্ষে, পাইথন ৩.7 এবং তারপরের জন্য সন্নিবেশ ক্রমের গ্যারান্টিযুক্ত!

>>> foo = dict(a=1,b=2,c=3,d=4)
>>> new_dict = {k: v for k, v in list(foo.items())[:2]}
>>> new_dict
{'a': 1, 'b': 2}
>>> new_dict.update(newvalue=99)
>>> new_dict
{'a': 1, 'b': 2, 'newvalue': 99}
>>> new_dict.update({k: v for k, v in list(foo.items())[2:]})
>>> new_dict
{'a': 1, 'b': 2, 'newvalue': 99, 'c': 3, 'd': 4}
>>> 

উপরেরটি অভিধান বোধগম্যতা ব্যবহার করছে।


2

কীটি ইতিমধ্যে বিদ্যমান কিনা তা পরীক্ষা করে দেখুন to

a={1:2,3:4}
a.get(1)
2
a.get(5)
None

তারপরে আপনি নতুন কী এবং মান যুক্ত করতে পারেন


0

অভিধান কী, মান শ্রেণি যুক্ত করুন।

class myDict(dict):

    def __init__(self):
        self = dict()

    def add(self, key, value):
        #self[key] = value # add new key and value overwriting any exiting same key
        if self.get(key)!=None:
            print('key', key, 'already used') # report if key already used
        self.setdefault(key, value) # if key exit do nothing


## example

myd = myDict()
name = "fred"

myd.add('apples',6)
print('\n', myd)
myd.add('bananas',3)
print('\n', myd)
myd.add('jack', 7)
print('\n', myd)
myd.add(name, myd)
print('\n', myd)
myd.add('apples', 23)
print('\n', myd)
myd.add(name, 2)
print(myd)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.