मेरे पास सूचियों की एक सूची है। उदाहरण के लिए,
[
[0,1,'f'],
[4,2,'t'],
[9,4,'afsd']
]
अगर मैं आंतरिक सूचियों के स्ट्रिंग क्षेत्र द्वारा बाहरी सूची को सॉर्ट करना चाहता था, तो आप अजगर में ऐसा कैसे करेंगे?
मेरे पास सूचियों की एक सूची है। उदाहरण के लिए,
[
[0,1,'f'],
[4,2,'t'],
[9,4,'afsd']
]
अगर मैं आंतरिक सूचियों के स्ट्रिंग क्षेत्र द्वारा बाहरी सूची को सॉर्ट करना चाहता था, तो आप अजगर में ऐसा कैसे करेंगे?
जवाबों:
यह आइटम करने वाले के लिए एक काम है
>>> from operator import itemgetter
>>> L=[[0, 1, 'f'], [4, 2, 't'], [9, 4, 'afsd']]
>>> sorted(L, key=itemgetter(2))
[[9, 4, 'afsd'], [0, 1, 'f'], [4, 2, 't']]
यहां लैम्बडा फ़ंक्शन का उपयोग करना भी संभव है, हालांकि लैम्बडा फ़ंक्शन इस सरल मामले में धीमा है
key=lambda x:x[2].casefold()
। यदि आपका पायथन नया नहीं है, तो .lower()
इसके बजाय का उपयोग करें.casefold()
जगह में
>>> l = [[0, 1, 'f'], [4, 2, 't'], [9, 4, 'afsd']]
>>> l.sort(key=lambda x: x[2])
छँटाई का उपयोग कर जगह में नहीं:
>>> sorted(l, key=lambda x: x[2])
in place
और जानकारी दे सकते हैं not in place
?
आइटमगेटर आपको कई मानदंडों / स्तंभों के आधार पर छाँटने देता है:
sorted_list = sorted(list_to_sort, key=itemgetter(2,0,1))
मेमने के कार्य के माध्यम से कई मापदंड भी लागू किए जा सकते हैं
sorted_list = sorted(list_to_sort, key=lambda x: (x[1], x[0]))
array.sort(key = lambda x:x[1])
आप इस स्निपेट का उपयोग करके आसानी से सॉर्ट कर सकते हैं, जहां 1 तत्व का सूचकांक है।
ऐशे ही:
import operator
l = [...]
sorted_list = sorted(l, key=operator.itemgetter(desired_item_index))
मुझे लगता है कि लैम्ब्डा फ़ंक्शन आपकी समस्या को हल कर सकता है।
old_list = [[0,1,'f'], [4,2,'t'],[9,4,'afsd']]
#let's assume we want to sort lists by last value ( old_list[2] )
new_list = sorted(old_list, key=lambda x: x[2])
#Resulst of new_list will be:
[[9, 4, 'afsd'], [0, 1, 'f'], [4, 2, 't']]
**old_list = [[0,1,'f'], [4,2,'t'],[9,4,'afsd']]
#let's assume we want to sort lists by last value ( old_list[2] )
new_list = sorted(old_list, key=lambda x: x[2])**
सही है अगर मैं गलत हूँ, लेकिन 'x [2]' को सूची में 3 आइटम नहीं बुला रहा हूँ, तो नेस्टेड सूची में 3 आइटम नहीं है? क्या यह x [2] [2] होना चाहिए?
एक बहुआयामी ऐरे को छाँटकर यहाँ निष्पादित करें
arr=[[2,1],[1,2],[3,5],[4,5],[3,1],[5,2],[3,8],[1,9],[1,3]]
arr.sort(key=lambda x:x[0])
la=set([i[0] for i in Points])
for i in la:
tempres=list()
for j in arr:
if j[0]==i:
tempres.append(j[1])
for j in sorted(tempres,reverse=True):
print(i,j)