पायथन डेटा संरचना क्रमबद्ध सूची वर्णानुक्रम में


159

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

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

मेरा सवाल यह है कि यह किस प्रकार का डेटा है, और वर्णानुक्रम में शब्दों को कैसे छाँटना है?


यदि आप अपनी सूची को क्रमबद्ध करना चाहते हैं तो आप "सूची = ['स्टेम', 'गठन', E प्रतिज्ञा ',, एफ्लक्स', 'व्हिम', 'इंट्रीग्यू'] सूची का उपयोग कर सकते हैं। सूची () प्रिंट सूची"।
kannanrbk

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

जवाबों:


231

[]एक सूची को ()दर्शाता है , एक टपल को {}दर्शाता है और एक शब्दकोश को दर्शाता है । आपको आधिकारिक पायथन ट्यूटोरियल पर एक नज़र डालनी चाहिए क्योंकि ये पायथन में प्रोग्रामिंग की मूल बातें हैं।

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

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


find_one()एक MongoDB डेटाबेस से एक pymongo परिणाम पर दूसरे उदाहरण का उपयोग करते हुए , मुझे त्रुटि मिलती है descriptor 'lower' requires a 'str' object but received a 'unicode':। परिणाम तार की एक सरणी है और इस तरह से लागू किया गया है results['keywords'] = sorted(keywords['keywords'], key=str.lower):। किसी को पता है कि यह कैसे हल करने के लिए?
user1063287

@ user1063287 मेरी देर से प्रतिक्रिया के लिए क्षमा करें। आपके मामले में, आपको key=unicode.lowerइसके बजाय लिखने की आवश्यकता है key=str.lower। ऐसा इसलिए है क्योंकि आप यूनिकोड स्ट्रिंग्स के साथ काम कर रहे हैं, बाइट स्ट्रिंग्स से नहीं। कृपया इस बारे में अधिक जानकारी के लिए आधिकारिक यूनिकोड HOWTO को देखें, विशेष रूप से अजगर 2 और 3 के बीच संबंधित मतभेदों के लिए
pemistahl

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)श्रुति से -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)]

12

आप एक अजगर सूची के साथ काम कर रहे हैं, और इसे छांटना उतना ही आसान है जितना कि यह करना।

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


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']
>>> 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.