পাইথনে একটি নতুন অভিধান তৈরি করা হচ্ছে


453

আমি পাইথনে একটি অভিধান তৈরি করতে চাই। যাইহোক, আমি যে সমস্ত উদাহরণ দেখি তা হ'ল একটি তালিকা ইত্যাদি থেকে একটি অভিধান ইনস্ট্যান্ট করছে। ..

পাইথনে আমি কীভাবে একটি নতুন খালি অভিধান তৈরি করব?

উত্তর:


661

dictকোনও পরামিতি ছাড়াই কল করুন

new_dict = dict()

বা সহজভাবে লিখুন

new_dict = {}

39
ডিক () এবং {} এর মধ্যে কি কোনও পার্থক্য রয়েছে? বা মানুষ কি একে অপরের চেয়ে বেশি পছন্দ করে?
ম্যাট

51
@ ম্যাট আপাতদৃষ্টিতে সিপথন ২.7 ডিক () ধীরে ধীরে (times গুণ ধীর?), দেখুন: ডউগহেলম্যান ডটকম / ২০১২ / ১১ / ১১ আমি যে কোনও ক্ষেত্রেই কনস্ট্রাক্টর সিনট্যাক্সকে পছন্দ করতে শুরু করছি যেহেতু কোড টাইপ করা এবং স্থানান্তর করা আমার পক্ষে সহজ মনে হয়েছে dicts এবং ফাংশন কল মধ্যে।
ডেভিড হুইটন

16
আমি নিশ্চিত করি যে পাইথন ৩.x তে ডিক () এর চেয়ে times use ব্যবহার করা তিনগুণ বেশি
অ্যালেক্স আাজাজেল

8
হ্যাঁ, আমি অজগর 3.6 {}ওভারের জন্য প্রায় dict()4 বার এবং []ওভারের জন্য 5 বার পাই list()
মাইকেল হল

10
বেশিরভাগ ক্ষেত্রে, এটি ছয়গুণ বেশি সময় নেয় কিনা তা বিবেচ্য নয়, কারণ এটি এখনও অদৃশ্যভাবে অল্প পরিমাণে সময় নেয়।
হাইপুমান

247

তুমি এটি করতে পারো

x = {}
x['a'] = 1

107
এটিতে কীভাবে নতুন উপাদান যুক্ত করবেন তার পরবর্তী যৌক্তিক প্রশ্নের জন্য +1
ম্যাট ক্লিন

27

কীভাবে একটি প্রিসেট অভিধান লিখতে হবে তা জানার জন্যও দরকারী:

cmap =  {'US':'USA','GB':'Great Britain'}

# Explicitly:
# -----------
def cxlate(country):
    try:
        ret = cmap[country]
    except KeyError:
        ret = '?'
    return ret

present = 'US' # this one is in the dict
missing = 'RU' # this one is not

print cxlate(present) # == USA
print cxlate(missing) # == ?

# or, much more simply as suggested below:

print cmap.get(present,'?') # == USA
print cmap.get(missing,'?') # == ?

# with country codes, you might prefer to return the original on failure:

print cmap.get(present,present) # == USA
print cmap.get(missing,missing) # == RU

4
ভাল যুক্তি! তবে আমি মনে করি এর বিটটি cxlateআপনার উত্তরটিকে খুব জটিল বলে মনে হচ্ছে। আমি শুধু আরম্ভের অংশটি রাখতাম। ( cxlateনিজেই খুব জটিল just আপনি ঠিকই পারতেন return cmap.get(country, '?')))
ড্যানিয়েল দারাবস

ডকস.পাইথন.আর. / 2 / লিবারি / ব্যবহার করার পরিবর্তে অনুবাদ ফাংশন লেখার পরিবর্তে বা .get () সর্বত্র ব্যবহার করার কথা বিবেচনা করুন।
স্পার

1
সম্ভবত আমি চাই, ডকুমেন্টেশনটি আমার কাছে একেবারেই অস্বচ্ছ - এটি ভয়ানক। তারা আমাকে কী করতে বলছে বা আমার কেন করা উচিত তা আমার কোনও ধারণা নেই। এবং .get () ঠিক ঠিক কাজটি করেছে বলে মনে হচ্ছে - প্লাস এটি অত্যন্ত নমনীয়। আমি নিশ্চিত এটি আমার পক্ষ থেকে বোঝার অভাব। এই বিষয়টি মাথায় রেখে আমার প্রশ্নগুলি: কেন বিরক্ত করবেন? এখানে কী সংরক্ষণ করা হয়েছে, এখানে সহজ, এখানে দ্রুত ইত্যাদি? উপকারটা ঠিক কী?
fyngyrz

1
সম্পর্কিত নয়, তবে আপনাকে খালিটির KeyErrorপরিবর্তে স্পষ্টভাবে ধরা উচিত (যা KeyboardInterruptএবং যেমন জিনিসগুলি ধরতে পারে SystemExit)।
অরনাভ বোরবোরাহ

অর্নভ, হ্যাঁ অবশ্যই আপনি ঠিক বলেছেন সেই অনুসারে সম্পাদিত। ধন্যবাদ!
fyngyrz


15
d = dict()

অথবা

d = {}

অথবা

import types
d = types.DictType.__new__(types.DictType, (), {})

types.DictType.__new__(types.DictType, (), {})এবং ঠিক মধ্যে পার্থক্য কি{}

2
যে কারও এটি পড়ার জন্য: সর্বশেষ "সমাধান "টি একটি রসিকতা - আপনি এটি ব্যবহার করতে পারেন (কমপক্ষে পাইথন ২.x এ - পাইকারে কাজ করবে না), তবে এর নিজের মনের কেউই কখনই এটি করতে চাইবে না সুতরাং ;-)
ব্রুনো desthuilliers


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.