কেস-সংবেদনশীল বাছাই, স্ট্রিংটিকে স্থানে বাছাই করে পাইথন 2 বা 3 (পাইথন ২.7.১7 এবং পাইথন ৩.6.৯ এ পরীক্ষিত):
>>> x = ["aa", "A", "bb", "B", "cc", "C"]
>>> x.sort()
>>> x
['A', 'B', 'C', 'aa', 'bb', 'cc']
>>> x.sort(key=str.lower) # <===== there it is!
>>> x
['A', 'aa', 'B', 'bb', 'C', 'cc']
চাবিটি হ'ল key=str.lower
। সহজ কপি-পেস্ট করার জন্য এই কমান্ডগুলি কেবল কমান্ডগুলির সাথে দেখতে কেমন তাই আপনি সেগুলি পরীক্ষা করতে পারেন:
x = ["aa", "A", "bb", "B", "cc", "C"]
x.sort()
x
x.sort(key=str.lower)
x
মনে রাখবেন যে যদি আপনার স্ট্রিংগুলি ইউনিকোড স্ট্রিং হয় তবে (যেমন u'some string'
), তবে পাইথন 2-এ কেবল (পাইথন 3 তে এই ক্ষেত্রে নয়) উপরের x.sort(key=str.lower)
কমান্ডটি ব্যর্থ হবে এবং নিম্নলিখিত ত্রুটিটি আউটপুট করবে:
TypeError: descriptor 'lower' requires a 'str' object but received a 'unicode'
যদি আপনি এই ত্রুটিটি পান তবে তা পাইথন 3 এ আপগ্রেড করুন যেখানে তারা ইউনিকোড বাছাই পরিচালনা করে, অথবা আপনার ইউনিকোড স্ট্রিংগুলিকে প্রথমে ASCII স্ট্রিংগুলিতে রূপান্তর করুন, এর মতো একটি তালিকা বোধগম্যতা ব্যবহার করে:
# for Python2, ensure all elements are ASCII (NOT unicode) strings first
x = [str(element) for element in x]
# for Python2, this sort will only work on ASCII (NOT unicode) strings
x.sort(key=str.lower)
তথ্যসূত্র:
- https://docs.python.org/3/library/stdtypes.html#list.sort
- একটি ইউনিকোড স্ট্রিংটি পাইথনের স্ট্রিংয়ে রূপান্তর করুন (অতিরিক্ত চিহ্ন সহ)
- https://www.programiz.com/python-programming/list-comprehension