की सूची की सूची में अधिकतम मूल्य मुझे टुपल्स की सूची की गतिशील सूची में उच्चतम मूल्य प्राप्त करने में समस्या है। उच्चतम मूल्य (पूर्णांक) प्राप्त करने के लिए सूची के माध्यम सेट्यूपल
adymlist = [[('name1',1)],[('name2',2),('name3',1), ...('name10', 20)], ...,[('name m',int),..]]
अब मैं पाश:
total = {}
y=0
while y < len(adymlist):
if len(adymlist) == 1:
#has the List only 1 Element -> save it in total
total[adymlist[y][0][0]] = adymlist[y][0][1]
y += 1
else:
# here is the problem
# iterate through each lists to get the highest Value
# and you dont know how long this list can be
# safe the highest Value in total f.e. total = {'name1':1,'name10':20, ..}
मैं अधिकतम मूल्य प्राप्त करने के लिए एक बहुत कोशिश की, लेकिन मैंने पाया
कर सकते हैं सूची इस तरह दिखता है मेरी समस्या का कोई निष्कर्ष नहीं। मुझे पता है कि मुझे सूची में प्रत्येक टुपल के माध्यम से लूप करना होगा और इसे अगले के साथ तुलना करना चाहिए, लेकिन यह नहीं जानता कि इसे सही तरीके से कैसे कोड किया जाए।
इसके अलावा मैं फ़ंक्शन max()
का उपयोग कर सकता हूं लेकिन यह स्ट्रिंग्स और पूर्णांक के साथ काम नहीं करता है। उदा a = [ ('a',5),('z',1)]
-> परिणाम max(a) ---> ('z',1)
obv 5> 1 लेकिन z> इसलिए मैंने अधिकतम फ़ंक्शन को max(a, key=int)
के साथ विस्तारित करने का प्रयास किया लेकिन मुझे एक प्रकार त्रुटि मिली।
आशा है कि आप समझ सकते हैं कि मैं क्या चाहता हूँ ;-)
अद्यतन
धन्यवाद अब तक।अगर मैं itertools.chain(*adymlist)
और max(flatlist, key=lambda x: x[1])
का उपयोग मैं मिल जाएगा की तरह एक अपवाद: max_word = अधिकतम (flatlist, कुंजी = लैम्ब्डा एक्स: एक्स [1]) लेखन त्रुटि: 'int' वस्तु unsubscriptable है
लेकिन मैं तो itertools.chain(adymlist)
का उपयोग करें यह ठीक काम करता है। लेकिन मुझे नहीं पता कि सूची के प्रत्येक टुपल से सभी पूर्णांक कैसे समेटें। मुझे इसे समझने में आपकी मदद की ज़रूरत है।
अन्यथा मैंने उस सूची में सभी पूर्णांक और उच्चतम पूर्णांक के योग प्राप्त करने के लिए itertools.chain(*adymlist)
के लिए एक कार्यवाही लिखा।
chain = itertools.chain(*adymlist)
flatlist = list(chain)
# flatlist = string, integer, string, integer, ...
max_count = max(flatlist[1:len(flatlist):2])
total_count = sum(flatlist[1:len(flatlist):2])
# index of highest integer
idx = flatlist.index(next((n for n in flatlist if n == max_count)))
max_keyword = flatlist[idx-1]
यह अभी भी जो मैं चाहता है, लेकिन यह गंदा करने के लिए नहीं है?