আমার নীচে একটি অভিধান রয়েছে:
colors = {
"blue" : "5",
"red" : "6",
"yellow" : "8",
}
আমি অভিধানে প্রথম এন্ট্রিটিকে কীভাবে সূচক করব?
colors[0]
KeyError
সুস্পষ্ট কারণে একটি ফিরে আসবে ।
আমার নীচে একটি অভিধান রয়েছে:
colors = {
"blue" : "5",
"red" : "6",
"yellow" : "8",
}
আমি অভিধানে প্রথম এন্ট্রিটিকে কীভাবে সূচক করব?
colors[0]
KeyError
সুস্পষ্ট কারণে একটি ফিরে আসবে ।
উত্তর:
পাইথন ৩.6 পর্যন্ত এবং পাইথন সংস্করণগুলিতে ডিকোরিটিগুলি আনঅর্ডার করা হয়। আপনি এন্ট্রি অর্ডার যত্নশীল না করেন এবং যাহাই হউক না কেন কী বা ইনডেক্স দ্বারা মান অ্যাক্সেস করতে চান, আপনি ব্যবহার করতে পারেন d.keys()[i]
এবং d.values()[i]
বা d.items()[i]
। (দ্রষ্টব্য যে এই পদ্ধতিগুলি পাইথন ২.x এ সমস্ত কী, মান বা আইটেমের একটি তালিকা তৈরি করে So সুতরাং আপনার যদি আরও একবার প্রয়োজন হয় তবে কর্মক্ষমতা উন্নত করতে তালিকাটি একটি পরিবর্তনশীলতে সংরক্ষণ করুন))
আপনি যদি পাইথন ২.7 দিয়ে শুরু করে এন্ট্রিগুলির ক্রম সম্পর্কে যত্নশীল হন তবে আপনি ব্যবহার করতে পারেন collections.OrderedDict
। অথবা জোড়ের তালিকা ব্যবহার করুন
l = [("blue", "5"), ("red", "6"), ("yellow", "8")]
যদি আপনার কী দ্বারা অ্যাক্সেসের প্রয়োজন না হয়। (কেন আপনার সংখ্যাগুলি স্ট্রিং করছে?)
পাইথন ৩.7-এ, সাধারণ অভিধানগুলি অর্ডার করা হয়, সুতরাং আপনার OrderedDict
আর ব্যবহার করার দরকার নেই (তবে আপনি এখনও করতে পারেন - এটি মূলত একই ধরণের)। পাইথন ৩.6-এর সিপিথন বাস্তবায়ন ইতিমধ্যে সেই পরিবর্তনটি অন্তর্ভুক্ত করেছে, তবে এটি ভাষা নির্দিষ্টকরণের অংশ না হওয়ায় আপনি পাইথন ৩.6 এ নির্ভর করতে পারবেন না।
d.iterkeys().next()
পরিবর্তে ব্যবহার করুন d.keys()[0]
। যদি অভিধানটি বিশাল হয় তবে এটি পারফরম্যান্সের ক্ষেত্রে একটি বড় পার্থক্য আনবে। একই মান এবং আইটেম জন্য যায়। পাইথন ২.7 এ আপনি
যদি এখনও কেউ এই প্রশ্নটির দিকে তাকাচ্ছেন তবে বর্তমানে গৃহীত উত্তরগুলি এখন পুরানো:
যেহেতু পাইথন ৩.7 * অভিধানগুলি অর্ডার-সংরক্ষণযোগ্য , সে কারণেই তারা এখন ঠিক তেমন collections.OrderedDict
ব্যবহার করে। দুর্ভাগ্যক্রমে, অভিধান keys()
/ values()
এর সূচীকরণের জন্য এখনও কোনও উত্সর্গীকৃত পদ্ধতি নেই , সুতরাং অভিধানে প্রথম কী / মান পাওয়া হিসাবে করা যেতে পারে
first_key = list(colors)[0]
first_val = list(colors.values())[0]
বা বিকল্পভাবে (এটি তালিকার কীগুলি তাত্ক্ষণিক করে তোলা এড়াতে পারে):
def get_first_key(dictionary):
for key in dictionary:
return key
raise IndexError
first_key = get_first_key(colors)
first_val = colors[first_key]
আপনার যদি একটি n
অ্যান্থ কী প্রয়োজন হয় তবে একইভাবে
def get_nth_key(dictionary, n=0):
if n < 0:
n += len(dictionary)
for i, key in enumerate(dictionary.keys()):
if i == n:
return key
raise IndexError("dictionary index out of range")
(* সিপথন ৩.6 এর মধ্যে ইতিমধ্যে অর্ডার করা ডিক্টস অন্তর্ভুক্ত ছিল তবে এটি কেবল একটি বাস্তবায়নের বিশদ ছিল। ভাষা স্পেসিফিকেশনটিতে 7. from থেকে অর্ডারযুক্ত ডিক্টস অন্তর্ভুক্ত রয়েছে।)
অভিধানের কোনও উপাদানকে সম্বোধন করা গাধার উপরে বসে যাত্রা উপভোগ করার মতো।
পাইথনের নিয়ম হিসাবে অধ্যায়টি অর্ডারহীন
আছে যদি
dic = {1: "a", 2: "aa", 3: "aaa"}
এখন ধরুন আমি যদি এইরকম হয়ে যাই dic[10] = "b"
তবে এটি সর্বদা এর মতো যুক্ত হয় না
dic = {1:"a",2:"aa",3:"aaa",10:"b"}
এটি হতে পারে
dic = {1: "a", 2: "aa", 3: "aaa", 10: "b"}
বা
dic = {1: "a", 2: "aa", 10: "b", 3: "aaa"}
বা
dic = {1: "a", 10: "b", 2: "aa", 3: "aaa"}
বা এই জাতীয় কোনও সংমিশ্রণ।
থাম্ব নিয়ম তাই হয় অভিধান হল আদেশহীন !
যদি আপনার অর্ডার করা অভিধানের প্রয়োজন হয় তবে আপনি অদ্ভুত ব্যবহার করতে পারেন ।
আসলে আমি একটি অভিনব সমাধান খুঁজে পেয়েছি যা সত্যিই আমাকে সাহায্য করেছিল, আপনি যদি বিশেষত কোনও তালিকা বা ডেটা সেটের নির্দিষ্ট মানের সূচক সম্পর্কে উদ্বিগ্ন হন তবে আপনি কেবলমাত্র সেই সূচকে অভিধানের মান সেট করতে পারেন !:
শুধু দেখ:
list = ['a', 'b', 'c']
dictionary = {}
counter = 0
for i in list:
dictionary[i] = counter
counter += 1
print(dictionary) # dictionary = {'a':0, 'b':1, 'c':2}
এখন হ্যাশম্যাপের শক্তির মাধ্যমে আপনি স্থির সময়ে সূচকে আপনার এন্ট্রিগুলি টেনে আনতে পারেন (পুরো অনেক দ্রুত)
ওহ, এটি একটি কঠিন। আপনার এখানে যা আছে তা মূলত প্রতিটি আইটেমের জন্য দুটি মান। তারপরে আপনি কী হিসাবে তাদের একটি নম্বর দিয়ে কল করার চেষ্টা করছেন। দুর্ভাগ্যক্রমে, আপনার মানগুলির মধ্যে একটি ইতিমধ্যে কী হিসাবে সেট করা আছে!
এটা চেষ্টা কর:
colors = {1: ["blue", "5"], 2: ["red", "6"], 3: ["yellow", "8"]}
এখন আপনি কীগুলি সংখ্যা অনুসারে কল করতে পারেন যেন সেগুলি তালিকার মতো সূচিযুক্ত হয়। আপনি তালিকার মধ্যে তাদের অবস্থান অনুসারে রঙ এবং সংখ্যা উল্লেখ করতে পারেন।
উদাহরণ স্বরূপ,
colors[1][0]
// returns 'blue'
colors[3][1]
// returns '8'
অবশ্যই, আপনাকে প্রতিটি রঙ কী অবস্থানে রয়েছে সে সম্পর্কে নজর রাখার আরেকটি উপায় নিয়ে আসতে হবে Maybe সম্ভবত আপনার কাছে অন্য একটি অভিধান থাকতে পারে যা প্রতিটি রঙের কী এর মান হিসাবে সংরক্ষণ করে।
color_key = {'নীল': 1, 'লাল': 6, 'ইয়োলো': 8
তারপরে, আপনার প্রয়োজন হলে রঙগুলির কীও সন্ধান করতে সক্ষম হবেন।
রং [color_key ['নীল']] [0] 'নীল' ফিরবে
এরকম কিছু.
এবং তারপরে, আপনি যখন যাচ্ছেন, আপনি কী হিসাবে সংখ্যা মানগুলি দিয়ে একটি ডিক তৈরি করতে পারেন যাতে আপনি সর্বদা সেগুলি আপনার রঙগুলি সন্ধান করতে ব্যবহার করতে পারেন, আপনার যদি প্রয়োজন হয় তবে আপনি জানেন।
মান = {5: [1, 'নীল'], 6: [2, 'লাল'], 8: [3, 'হলুদ']}
তারপরে, (রঙগুলি [color_key [মানগুলি [5] [1]]] [[0]) 'নীল' ফিরবে।
অথবা আপনি তালিকার একটি তালিকা ব্যবহার করতে পারেন।
শুভকামনা!
আপনি পারবেন না, যেহেতু dict
অর্ডারড নয়। আপনি .popitem()
একটি স্বেচ্ছাসেবী আইটেম পেতে ব্যবহার করতে পারেন , কিন্তু এটি ডিক থেকে এটি সরিয়ে ফেলবে।