2012-12-25 10 views
84

मैं अजगर में डेटा संरचना के बारे में थोड़ा उलझन में हूं; (), [], और {}। मैं एक साधारण सूची को हल करने की कोशिश कर रहा हूं, शायद इसलिए कि मैं उस डेटा के प्रकार की पहचान नहीं कर सकता जिसे मैं सॉर्ट करने में विफल हूं।पाइथन डेटा संरचना सॉर्ट सूची वर्णानुक्रम

मेरी सूची में सरल है: ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

मेरा प्रश्न डेटा की कि यह किस प्रकार है, और कैसे वर्णानुक्रम शब्द सॉर्ट करने के लिए?

+0

यदि आप अपनी सूची को सॉर्ट करना चाहते हैं तो आप "list = ['Stem', 'constitute', 'सेज', 'Eflux', ' व्हाइम ',' साज़िश '] list.sort() प्रिंट सूची "। – kannanrbk

+0

'[] 'बिल्टिन डेटाटाइप' सूची 'संलग्न करता है, (http://www.tutorialspoint.com/python/python_lists.htm देखें)। सूचियां केवल मूल्यों के समूह हैं (उनमें अन्य पुनरावृत्त वस्तुएं हो सकती हैं- यानी नेस्टेड सूचियां)। '() 'बिल्टिन' tuple' संलग्न करता है। वे अपरिवर्तनीय हैं (बदला नहीं जा सकता है)। (देखें http://www.tutorialspoint.com/python/python_tuples.htm)। और '{} 'बिल्टिन' शब्दकोष संलग्न करता है। एक शब्दकोश (शब्दों के लिए) के समानांतर, जहां 'कुंजी' शब्द होगा और 'मान परिभाषा है। (देखें http://www.tutorialspoint.com/python/python_dictionary.htm)। –

उत्तर

124

[] अर्थ है एक list, () एक tuple को दर्शाता है और {} एक dictionary को दर्शाता है। आपको official Python tutorial पर एक नज़र डालना चाहिए क्योंकि ये पाइथन में प्रोग्रामिंग की मूल बातें हैं।

आपके पास स्ट्रिंग्स की एक सूची है। आप इस तरह यह सॉर्ट कर सकते हैं:

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 के साथ काम करने की ज़रूरत है, तो आप यूनिकोड स्ट्रिंग्स से निपट सकते हैं जिनके पास पाइथन 2 में डेटा प्रकार unicode है, और str नहीं है। ऐसे मामले में, यदि आपके पास यूनिकोड तारों की एक सूची है, तो आपको key=str.lower के बजाय key=unicode.lower लिखना होगा। एक dict ({1:2,3:4} हालांकि यह सिर्फ एक वापस आ जाएगी;

+0

एक मोंगोडीबी डेटाबेस से एक पिमोंगो 'find_one()' परिणाम पर दूसरे उदाहरण का उपयोग करके, मुझे त्रुटि मिलती है: 'descriptor' low 'को' str 'ऑब्जेक्ट की आवश्यकता होती है लेकिन उसे' यूनिकोड 'प्राप्त होता है। नतीजा तारों की एक सरणी है और इस तरह कार्यान्वित किया गया है: 'परिणाम [' कीवर्ड '] = क्रमबद्ध (कीवर्ड [' कीवर्ड '], कुंजी = str.lower) '। क्या कोई इसे हल करने के बारे में जानता है? – user1063287

+0

@ user1063287 मेरी देर से प्रतिक्रिया के लिए खेद है। आपके मामले में, आपको 'key = str.lower' के बजाय' key = unicode.lower' लिखना होगा। ऐसा इसलिए है क्योंकि आप यूनिकोड तारों से निपट रहे हैं, बाइट तार नहीं। इस पर अधिक जानकारी के लिए कृपया आधिकारिक [यूनिकोड हाउटो] (https://docs.python.org/3/howto/unicode.html) देखें, खासकर पायथन 2 और 3. – pemistahl

6

आप एक अजगर सूची से निपट रहे हैं, और इसे सॉर्ट करना इसे करने में आसान है।

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

आप अंतर्निहित sorted फ़ंक्शन का उपयोग कर सकते हैं।

print sorted(['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']) 
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'] 
>>> 
19

अजगर एक अंतर्निहित समारोह sorted कहा जाता है, किसी भी iterable से आप इस तरह के) एक सूची ([1,2,3] के रूप में यह (फ़ीड जो आपको एक क्रमबद्ध सूची दे देंगे है चाबियों का हल कर सूची; एक सेट ({1,2,3,4);।) या एक टपल ((1,2,3,4))

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

सूचियाँ भी एक sort विधि है कि यथा-स्थान तरह प्रदर्शन करेंगे है

दोनों key तर्क भी लेते हैं, जो एक कॉल करने योग्य (फ़ंक्शन/लैम्ब्डा) होना चाहिए जिसका उपयोग आप सॉर्ट करने के लिए कर सकते हैं।
उदाहरण के लिए, एक dict जो मूल्य के अनुसार क्रमबद्ध है आप निम्नलिखित कोड का उपयोग कर सकते से (key,value) -pairs की एक सूची प्राप्त करने के लिए:

>>> 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)] 
+0

@ jwpat7 के बीच संबंधित मतभेदों के लिए, हाँ । बेहतर? –

+0

वास्तव में यह बताने के लिए धन्यवाद कि यह कैसे काम करता है। बहुत उपयोगी। – joshmcode

3

ListName.sort() वर्णानुक्रम यह सॉर्ट होगा। आप वस्तुओं के क्रम को उल्टा करने के लिए ब्रैकेट में reverse=False/True जोड़ सकते हैं: ListName.sort(reverse=False)

+0

क्या यह रूबी के लिए एक टिप्पणी है? – allanberry

संबंधित मुद्दे