যদি কোনও mydict
শূন্য না থাকে, তবে আমি একটি স্বেচ্ছাসেবী উপাদানটি অ্যাক্সেস করি:
mydict[mydict.keys()[0]]
এটি করার আরও ভাল উপায় আছে কি?
list(mydict.keys())[0]
।
যদি কোনও mydict
শূন্য না থাকে, তবে আমি একটি স্বেচ্ছাসেবী উপাদানটি অ্যাক্সেস করি:
mydict[mydict.keys()[0]]
এটি করার আরও ভাল উপায় আছে কি?
list(mydict.keys())[0]
।
উত্তর:
পাইথন 3-এ, ধ্বংসাত্মক এবং পুনরুক্তি:
next(iter(mydict.values()))
পাইথন 2 এ, ধ্বংসাত্মক এবং পুনরুক্তি:
mydict.itervalues().next()
যদি আপনি এটি পাইথন 2 এবং 3 উভয় ক্ষেত্রেই কাজ করতে চান তবে আপনি six
প্যাকেজটি ব্যবহার করতে পারেন :
six.next(six.itervalues(mydict))
যদিও এই মুহুর্তে এটি বেশ রহস্যজনক এবং আমি বরং আপনার কোডটি পছন্দ করব।
আপনি যদি কোনও আইটেম সরাতে চান তবে করুন:
key, value = mydict.popitem()
নোট করুন যে "প্রথম" এখানে উপযুক্ত শব্দ হতে পারে না কারণ dict
পাইথন <3.6 এ কোনও অর্ডারযুক্ত প্রকার নয়। পাইথন 3.6+ অর্ডার করা dicts
হয়।
dict.iterkeys().next()
?
dict.values().__iter__().__next__()
:)
key, value = dict(d).popitem()
আপনার যদি কেবলমাত্র একটি উপাদান অ্যাক্সেস করার প্রয়োজন হয় (সুযোগ অনুসারে প্রথম হওয়ায় ডিক্টস অর্ডার দেওয়ার নিশ্চয়তা দেয় না) আপনি পাইথন 2 এ কেবল এটি করতে পারেন :
my_dict.keys()[0] -> key of "first" element
my_dict.values()[0] -> value of "first" element
my_dict.items()[0] -> (key, value) tuple of "first" element
দয়া করে নোট করুন (আমার জ্ঞানের সর্বোপরি) পাইথন গ্যারান্টি দেয় না যে এই পদ্ধতিগুলির যে কোনও একটির পর পর দুটি কল একই ক্রম দিয়ে তালিকাটি ফিরে আসবে। এটি পাইথন 3 সহ সমর্থিত নয়।
মধ্যে পাইথন 3 :
list(my_dict.keys())[0] -> key of "first" element
list(my_dict.values())[0] -> value of "first" element
list(my_dict.items())[0] -> (key, value) tuple of "first" element
list(my_dict.keys())[0]
list(my_dict.keys())[0]
অলস নয়?
পাইথন 3 এ, উপায়:
dict.keys()
প্রকারভেদে একটি মান ফেরত দিন: ডিক_কিজ (), ডিকের কীগুলির প্রথম সদস্য পেলাম তখন আমরা ত্রুটি পেয়ে যাব:
dict.keys()[0]
TypeError: 'dict_keys' object does not support indexing
অবশেষে, আমি ডট.কেজ () কে @ 1 ম তালিকায় রূপান্তরিত করেছি, এবং তালিকা বিভাজন পদ্ধতিতে 1 ম সদস্য পেয়েছি:
list(dict.keys())[0]
list(dict.values())[0]
।
অন্যরা যেমন উল্লেখ করেছে, কোনও "প্রথম আইটেম" নেই, যেহেতু অভিধানগুলির কোনও গ্যারান্টিযুক্ত অর্ডার নেই (সেগুলি হ্যাশ টেবিল হিসাবে প্রয়োগ করা হয়)। আপনি যদি উদাহরণস্বরূপ চান, তবে সবচেয়ে ছোট কীটির সাথে মানটি এটি thedict[min(thedict)]
করবে। যদি আপনি কীগুলি কীভাবে সন্নিবেশ করা হয়েছিল সেটির বিষয়ে উদ্বিগ্ন হন, অর্থাত্ "প্রথম" দ্বারা আপনার বোঝানো হয়েছে "earোকানো শীঘ্রতম", তারপরে পাইথন ৩.১ এ আপনি সংগ্রহগুলি ব্যবহার করতে পারেন rআরআর্টডিক্ট , যা আগত পাইথন ২.7 এও রয়েছে; পাইথনের পুরানো সংস্করণগুলির জন্য ডাউনলোড করুন, ইনস্টল করুন এবং আদেশযুক্ত ডিক ব্যাকপোর্ট (২.৪ এবং তারপরে) ব্যবহার করুন যা আপনি এখানে খুঁজে পেতে পারেন ।
পাইথন ৩.7 এখন ডিক্টগুলি সন্নিবেশয়ের আদেশ দেওয়া হয়েছে।
কেমন, এই। এখনও এখানে উল্লেখ করা হয়নি।
পাই 2 এবং 3
a = {"a":2,"b":3}
a[list(a)[0]] # the first element is here
>>> 2
dict.values()
একটি দর্শন দেয়, সুতরাং ও (1) হওয়া উচিত। list(a)
একটি নতুন তালিকা প্রদান করে, সুতরাং ও (এন) হবে।
ডিক অর্ডার দেওয়ার আশেপাশের সমস্যাগুলি উপেক্ষা করা, এটি আরও ভাল হতে পারে:
next(dict.itervalues())
এইভাবে আমরা আইটেম অনুসন্ধান এবং আমাদের ব্যবহার না করে এমন কীগুলির একটি তালিকা তৈরি করা এড়ানো।
next(iter(dict.values()))
next(iter(dict.values()))
তালিকা তৈরি না করে আমাদের একই ফল পাওয়া দরকার ।
আপনি সর্বদা করতে পারেন:
for k in sorted(d.keys()):
print d[k]
এটি হয়ত আপনাকে ধারাবাহিকভাবে (সম্মান সঙ্গে সাজানো দেব builtin যদি আপনি শ্রেণীবিভাজন আপনাকে কোন অর্থ আছে উপর প্রক্রিয়া করতে পারি কি () আমি .hash) সেট। এর অর্থ উদাহরণস্বরূপ সংখ্যাটি প্রকারগুলি ধারাবাহিকভাবে বাছাই করা হয় এমনকি আপনি অভিধানটি প্রসারিত করলেও।
EXAMPLE টি
# lets create a simple dictionary
d = {1:1, 2:2, 3:3, 4:4, 10:10, 100:100}
print d.keys()
print sorted(d.keys())
# add some other stuff
d['peter'] = 'peter'
d['parker'] = 'parker'
print d.keys()
print sorted(d.keys())
# some more stuff, numeric of different type, this will "mess up" the keys set order
d[0.001] = 0.001
d[3.14] = 'pie'
d[2.71] = 'apple pie'
print d.keys()
print sorted(d.keys())
নোট করুন যে অভিধানটি প্রিন্ট করার সময় বাছাই করা আছে। তবে কী সেটটি মূলত হ্যাশম্যাপ!
পাইথন 2 এবং 3 উভয়ের জন্য:
import six
six.next(six.itervalues(d))
Is there any better way to do this?
সংক্ষিপ্ত পদ্ধতিতে প্রশ্নের উত্তর দেয় ।
first_key, *rest_keys = mydict
বাইরের কোনও লাইব্রেরি নেই, পাইথন ২.7 এবং ৩.x উভয় ক্ষেত্রেই কাজ করে:
>>> list(set({"a":1, "b": 2}.values()))[0]
1
অ্যাব্রিট্রি কী এর জন্য কেবল মূল্যবোধগুলি ছাড়ুন)
>>> list(set({"a":1, "b": 2}))[0]
'a'
সাবক্লাসিং dict
একটি পদ্ধতি, দক্ষ না হলেও though এখানে আপনি যদি পূর্ণসংখ্যার সরবরাহ করেন তবে তা ফিরে আসবে d[list(d)[n]]
, অন্যথায় প্রত্যাশার মতো অভিধানটি অ্যাক্সেস করুন:
class mydict(dict):
def __getitem__(self, value):
if isinstance(value, int):
return self.get(list(self)[value])
else:
return self.get(value)
d = mydict({'a': 'hello', 'b': 'this', 'c': 'is', 'd': 'a',
'e': 'test', 'f': 'dictionary', 'g': 'testing'})
d[0] # 'hello'
d[1] # 'this'
d['c'] # 'is'