পাইথন ডেটা স্ট্রাকচারের বর্ণমালা অনুসারে তালিকা সাজান


159

পাইথনে ডেটা কাঠামো সম্পর্কে আমি কিছুটা বিভ্রান্ত; (), []এবং {}। আমি একটি সহজ তালিকা বাছাই করার চেষ্টা করছি, সম্ভবত যেহেতু আমি যে ধরণের ডেটা বাছাই করতে ব্যর্থ হচ্ছি তা সনাক্ত করতে পারি না।

আমার তালিকাটি সহজ: ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

আমার প্রশ্ন হ'ল এটি কী ধরণের ডেটা এবং শব্দগুলি বর্ণমালা অনুসারে বাছাই করার উপায় কী?


আপনি যদি নিজের তালিকাটি বাছাই করতে চান তবে আপনি "list = ['স্টেম', 'গঠন",' সেজ ',' ইফ্লাক্স ',' হুইম ',' ইন্ট্রিগ '] list.sort () মুদ্রণ তালিকা "ব্যবহার করতে পারেন।
kannanrbk

[]builtin ডাটাটাইপ encloses list, (দেখুন tutorialspoint.com/python/python_lists.htm )। তালিকাগুলি হ'ল মানগুলির গোষ্ঠী (এগুলিতে অন্যান্য পুনরাবৃত্তিযোগ্য বস্তু থাকতে পারে - যেমন নেস্টেড তালিকা)। ()অন্তর্নির্মিত ঘের tuple। এগুলি পরিবর্তনযোগ্য (পরিবর্তন করা যায় না)। ( টিউটোরিয়ালস্পয়েন্ট.পাইথন / প্যাথন_টুপলস htm দেখুন )। এবং {}অন্তর্নির্মিত আবদ্ধ dictionary। অভিধানের সাথে সমান্তরাল (শব্দের জন্য), যেখানে একটি 'কী' শব্দটি হবে এবং 'মানটির সংজ্ঞা'। ( টিউটোরিয়ালস্পয়েন্ট.পাইথন / প্যাথন_ডেটোরিয়ালটিএইচটিএম দেখুন )।
রাশি পঞ্চাল 21

উত্তর:


231

[]একটি উল্লেখ করে তালিকা , ()একটি উল্লেখ করে tuple এবং {}একটি উল্লেখ করে অভিধান । আপনার পাইথনের অফিশিয়াল টিউটোরিয়ালটি একবার দেখে নেওয়া উচিত কারণ এগুলি পাইথনের প্রোগ্রামিংয়ের মূল বিষয়।

আপনার কাছে যা আছে তা হল স্ট্রিংগুলির একটি তালিকা। আপনি এটি এর মতো বাছাই করতে পারেন:

In [1]: lst = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

In [2]: sorted(lst)
Out[2]: ['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']

আপনি দেখতে পাচ্ছেন, বড় হাতের অক্ষর দিয়ে শুরু হওয়া শব্দগুলি ছোট হাতের অক্ষর দিয়ে শুরু হওয়া লোকদের চেয়ে অগ্রাধিকার পায়। আপনি যদি তাদের স্বাধীনভাবে বাছাই করতে চান তবে এটি করুন:

In [4]: sorted(lst, key=str.lower)
Out[4]: ['constitute', 'Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim']

আপনি এই কাজটি করে তালিকার বিপরীতে ক্রম অনুসারে বাছাই করতে পারেন:

In [12]: sorted(lst, reverse=True)
Out[12]: ['constitute', 'Whim', 'Stem', 'Sedge', 'Intrigue', 'Eflux']

In [13]: sorted(lst, key=str.lower, reverse=True)
Out[13]: ['Whim', 'Stem', 'Sedge', 'Intrigue', 'Eflux', 'constitute']

দয়া করে নোট করুন: আপনি পাইথন 3 নিয়ে কাজ করেন, তবে strমানব-পঠনযোগ্য পাঠ্য থাকা প্রতিটি স্ট্রিংয়ের জন্য সঠিক ডেটা টাইপ। তবে, যদি আপনার এখনও পাইথন 2 নিয়ে কাজ করার দরকার পড়ে তবে আপনি ইউনিকোড স্ট্রিংগুলির সাথে ডিল করতে পারেন যা unicodeপাইথন 2 তে ডেটা টাইপ রয়েছে এবং না str। এই জাতীয় ক্ষেত্রে, যদি আপনার ইউনিকোড স্ট্রিংগুলির একটি তালিকা থাকে তবে আপনাকে অবশ্যই key=unicode.lowerপরিবর্তে লিখতে হবে key=str.lower


একটি pymongo দ্বিতীয় উদাহরণে ব্যবহার find_one()একটি MongoDB ডাটাবেস থেকে ফলাফল, আমি ভুল পাবেন: descriptor 'lower' requires a 'str' object but received a 'unicode'। ফলাফলের স্ট্রিং একটি অ্যারে এবং এই মত বাস্তবায়িত হল: results['keywords'] = sorted(keywords['keywords'], key=str.lower)। কেউ কীভাবে এই সমাধান করতে জানেন?
ব্যবহারকারী 1063287

@ user1063287 আমার দেরীতে প্রতিক্রিয়া জন্য দুঃখিত। আপনার ক্ষেত্রে, আপনার key=unicode.lowerপরিবর্তে লিখতে হবে key=str.lower। এটি কারণ আপনি ইউনিকোড স্ট্রিংগুলি নিয়ে কাজ করছেন, বাইট স্ট্রিংগুলি নয়। এ সম্পর্কে আরও তথ্যের জন্য দয়া করে অফিসিয়াল ইউনিকোড
হাওটো দেখুন

32

পাইথনের একটি অন্তর্নির্মিত ফাংশন রয়েছে sorted, এটি আপনাকে খাওয়ানো যেকোন পুনরাবৃত্তির থেকে সাজানো তালিকা দেবে (যেমন একটি তালিকা ( [1,2,3]) যেমন একটি ডিক ( {1:2,3:4}যদিও এটি কীগুলির একটি সাজানো তালিকা ফিরিয়ে দেবে; একটি সেট ( {1,2,3,4) ; বা একটি টিপল ( (1,2,3,4)))।

>>> x = [3,2,1]
>>> sorted(x)
[1, 2, 3]
>>> x
[3, 2, 1]

তালিকাগুলিতে একটি sortপদ্ধতিও রয়েছে যা স্থান অনুসারে বাছাই করে (x.sort () রিটার্ন কিছুই দেয় না তবে x বস্তু পরিবর্তন করে)।

>>> x = [3,2,1]
>>> x.sort()
>>> x
[1, 2, 3]

উভয়ই keyযুক্তি গ্রহণ করে, যা কলযোগ্য (ফাংশন / ল্যাম্বদা) হওয়া উচিত যা আপনি কী অনুসারে বাছাই করতে তা পরিবর্তন করতে ব্যবহার করতে পারেন।
উদাহরণস্বরূপ, (key,value)ডিকের অনুসারে জোড়ার একটি তালিকা পেতে যা মান অনুসারে বাছাই করা হয় আপনি নীচের কোডটি ব্যবহার করতে পারেন:

>>> x = {3:2,2:1,1:5}
>>> sorted(x.items(), key=lambda kv: kv[1])  # Items returns a list of `(key,value)`-pairs
[(2, 1), (3, 2), (1, 5)]

12

আপনি একটি অজগর তালিকার সাথে লেনদেন করছেন এবং এটি বাছাই করা যেমন করা সহজ তত সহজ।

my_list = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
my_list.sort()

11

আপনি অন্তর্নির্মিত sortedফাংশন ব্যবহার করতে পারেন ।

print sorted(['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'])

4

ListName.sort()এটি বর্ণমালা অনুসারে বাছাই করবে। reverse=False/Trueআইটেমের ক্রম বিপরীত করতে আপনি বন্ধনীগুলিতে যুক্ত করতে পারেন :ListName.sort(reverse=False)


1
এটি কি রুবির পক্ষে মন্তব্য?
অ্যালানবেরি

3
>>> a = ()
>>> type(a)
<type 'tuple'>
>>> a = []
>>> type(a)
<type 'list'>
>>> a = {}
>>> type(a)
<type 'dict'>
>>> a =  ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'] 
>>> a.sort()
>>> a
['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']
>>> 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.