অর্ডার করা অভিধান (ওডি) শুরু করার সঠিক উপায় কী যাতে এটি প্রাথমিক উপাত্তের ক্রম ধরে রাখে?
from collections import OrderedDict
# Obviously wrong because regular dict loses order
d = OrderedDict({'b':2, 'a':1})
# An OD is represented by a list of tuples, so would this work?
d = OrderedDict([('b',2), ('a', 1)])
# What about using a list comprehension, will 'd' preserve the order of 'l'
l = ['b', 'a', 'c', 'aa']
d = OrderedDict([(i,i) for i in l])
প্রশ্ন:
OrderedDictআরম্ভের সময় (দ্বিতীয় ও তৃতীয় উদাহরণ) উপরের সময়গুলিতে কোনও টিপলসের তালিকার ক্রম সংরক্ষণ করা হবে , বা টিপলসগুলির তালিকার তালিকাগুলির তালিকাগুলি বা তালিকার তালিকার তালিকা ইত্যাদি পাস করা হবে?OrderedDictবাস্তবে অর্ডার বজায় রাখলে কীভাবে যাচাই করা যায় ? যেহেতুdictএকটির একটি অনির্দেশ্য আদেশ রয়েছে, তাই যদি আমার পরীক্ষার ভেক্টরগুলির ভাগ্যক্রমে ডিকের অনির্দেশ্য আদেশের মতো একই প্রাথমিক ক্রম থাকে? উদাহরণস্বরূপ, যদিd = OrderedDict({'b':2, 'a':1})আমি লেখার পরিবর্তেd = OrderedDict({'a':1, 'b':2}), আমি ভুলভাবে সিদ্ধান্তে পৌঁছাতে পারি যে আদেশটি সংরক্ষণ করা হয়েছে। এই ক্ষেত্রে, আমি জানতে পারি যে একটিdictবর্ণানুক্রমিকভাবে অর্ডার করা হয়েছে, তবে এটি সর্বদা সত্য হতে পারে না। কোনও ডেটা স্ট্রাকচার অর্ডার সংরক্ষণ করে কিনা তা যাচাই করার জন্য একটি কাউন্টারিক্স নমুনা ব্যবহারের একটি নির্ভরযোগ্য উপায় কী, একটি বিরতি না হওয়া পর্যন্ত বার বার পরীক্ষামূলক ভেক্টর ব্যবহার করে দেখার চেষ্টা করা?
পিএস আমি কেবল এখানে রেফারেন্সের জন্য রেখে দেব : "অর্ডারডটিক্ট কনস্ট্রাক্টর এবং আপডেট () পদ্ধতি উভয়ই কীওয়ার্ড আর্গুমেন্ট গ্রহণ করে তবে তাদের অর্ডারটি নষ্ট হয়ে যায় কারণ পাইথনের ফাংশন কল সিম্যান্টিকস পাসওয়ার্ডে কীওয়ার্ড আর্গুমেন্টকে নিয়মিতভাবে অর্ডার না করা অভিধান ব্যবহার করে"
পিপিএস: আশা করি, ভবিষ্যতে, অর্ডারডটিক্টও কাওয়ার্গের ক্রম সংরক্ষণ করবে (উদাহরণ 1): http://bugs.python.org/issue16991
OrderDict(b=2, a=1)এটিও একটি সঠিক উপায়। পিইপি 468 দেখুন ।