পাইথনের ডিক.কিজ () কেন একটি তালিকা ফেরত পাঠায় না?


90

আমি পাইথনের কী পদ্ধতিটি তালিকার পরিবর্তে একটি সেট ফেরত প্রত্যাশা করব। যেহেতু এটি হ্যাশম্যাপের কীগুলি দেয় সেই ধরণের গ্যারান্টিটির সাথে সান্নিধ্যপূর্ণ। বিশেষত, সেগুলি অনন্য এবং সেট অনুসারে বাছাই করা হয় না। তবে, এই পদ্ধতিটি একটি তালিকা ফেরত দেয়:

>>> d = {}
>>> d.keys().__class__
<type 'list'>

পাইথন এপিআইতে এটি কি একটি ভুল বা আমি অনুপস্থিত থাকার অন্য কোনও কারণ রয়েছে?


4
এই আর পাইথন 3 ক্ষেত্রে দেখা যায় docs.python.org/3/library/stdtypes.html#dict-views
বরিস

উত্তর:


100

একটি কারণ হ'ল dict.keys()ভাষাতে সেটগুলির প্রবর্তন পূর্বে।

দ্রষ্টব্য যে dict.keys()পাইথন 3- এ রিটার্নের ধরণ পরিবর্তিত হয়েছে: ফাংশনটি এখন তালিকার পরিবর্তে "সেট-মত" মতামত দেয় returns

জন্য সেট মত মতামত, অপারেশন বিমূর্ত বেস বর্গ জন্য সংজ্ঞায়িত সব collections.abc.Setপাওয়া যায় (উদাহরণস্বরূপ, ==, <, অথবা ^)।


6
এবং এটি তালিকা / সেট / ইত্যাদির পরিবর্তে একটি দৃশ্য। কারণ খুব কমই সমস্ত কীগুলি অনুলিপি করার প্রয়োজন আছে।

31
এবং এই মতামতগুলি হিসাবে পরিচালনা করা যায় set()! যা dict.keys() | set()অপারেশন অনুমতি দেয় । পাই 3 রকস :)
ইয়োটা

4
আপনি যদি পাই 2 এর সাথে আটকে থাকেন, dict.viewkeys()সেট কল দিয়ে কল করে এবং এটি ব্যবহার করে আপনি একই কাজ করতে পারেন |, &...
টোবিয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.