2016-09-28 11 views
6

मैं एक अजगर सूची है कि इस तरह है,एक पायथन सूची में अधिकतम मूल्य और सूचकांक खोजें?

[[12587961, 0.7777777777777778], [12587970, 0.5172413793103449], [12587979, 0.3968253968253968], [12587982, 0.88], [12587984, 0.8484848484848485], [12587992, 0.7777777777777778], [12587995, 0.8070175438596491], [12588015, 0.4358974358974359], [12588023, 0.8985507246376812], [12588037, 0.5555555555555555], [12588042, 0.9473684210526315]] 

इस सूची में लंबाई में हजार अप करने के लिए तत्व हो सकते हैं, मैं कैसे उप सरणी में दूसरे मद के अनुसार सूची से अधिकतम मान प्राप्त कर सकते हैं , और अधिकतम मूल्य की अनुक्रमणिका प्राप्त करें जो कि अजगर में उप-सरणी में मुट्ठी तत्व है?

+0

आप सही @unwind हैं। मुझे लगता है कि वह दूसरे तत्व के अनुसार अधिकतम मूल्य वाले सभी तत्वों को ढूंढना चाहता है और पहले मान के आधार पर उनमें से अधिकतम को ढूंढना चाहता है। – thefourtheye

+0

अच्छी तरह से खेद है कि अगर आपको यह नहीं मिला है, तो ऐसा लगता है कि मैं अधिकतम दूसरे मूल्य के साथ उपन्यास चाहता हूं, दूसरा मान मतलब है [1] वें आइटम एक उपराय – rksh

+0

ठीक है ... मैं अभी भी समझने के लिए संघर्ष करता हूं। उदाहरण पर एक छोटा सा उदाहरण एक चार या पांच तत्व सूची सहायक होगी। लेकिन मुझे लगता है कि यह पहले ही हल हो चुका है। – unwind

उत्तर

11

max समारोह और उसके key पैरामीटर का उपयोग करें, सूची के तत्वों की तुलना करने के केवल दूसरे तत्व का उपयोग करें।

उदाहरण के लिए,

>>> data = [[12587961, 0.7777777777777778], [12587970, 0.5172413793103449], [12587979, 0.3968253968253968].... [12588042, 0.9473684210 
526315]] 
>>> max(data, key=lambda item: item[1]) 
[12588042, 0.9473684210526315] 

अब, अगर आप सिर्फ पहला तत्व चाहते हैं, तो आप बस पहला तत्व अकेले प्राप्त कर सकते हैं, या सिर्फ परिणाम खोल, इस

>>> index, value = max(data, key=lambda item: item[1]) 
>>> index 
12588042 
>>> value 
0.9473684210526315 

की तरह

संपादित करें: यदि आप अधिकतम मान (द्वितीय मान) वाले सभी तत्वों से अधिकतम अनुक्रमणिका (प्रथम मान) खोजना चाहते हैं, तो आप इसे

जैसे कर सकते हैं 10
>>> _, max_value = max(data, key=lambda item: item[1]) 
>>> max(index for index, value in data if value == max_value) 

आप एक कुंजी के साथ इस

max_index = float("-inf") 
max_value = float("-inf") 

for index, value in data: 
     if value > max_value: 
      max_value = value 
      max_index = index 
     elif value == max_value: 
      max_index = max(max_index, index) 
+0

धन्यवाद वास्तव में जो कुछ मैं चाहता था वह मूल उत्तर में वर्णित कुछ था, उपन्यास में अधिकतम मूल्य के साथ उपन्यास :) अधिकतम मूल्य के साथ अधिकतम संख्या वाले सरणी प्राप्त करने का कोई तरीका है, जैसे शीर्ष 10 उच्चतम मान :) – rksh

+0

@ आरकेश आपको उचित उदाहरण देना चाहिए। शब्द बस उलझन में हैं। – thefourtheye

+0

ठीक है अगर मैं इस '' 'डेटा = [1,2,5,7,6,8,3,9,4] 'जैसे एक सरणी हूं तो मैं एक साधारण उदाहरण लेगा,' मैं तीन अधिकतम मूल्य कैसे प्राप्त कर सकता हूं ? इस मामले में यह '' '7,8,9''' – rksh

0
from operator import itemgetter 

a = [[12587961, 0.7777777777777778], [12587970, 0.5172413793103449], [12587979, 0.3968253968253968], [12587982, 0.88], [12587984, 0.8484848484848485], [12587992, 0.7777777777777778], [12587995, 0.8070175438596491], [12588015, 0.4358974358974359], [12588023, 0.8985507246376812], [12588037, 0.5555555555555555], [12588042, 0.9473684210526315]] 

max(a, key=itemgetter(1))[0] 
// => 12588042 
3

उपयोग max की तरह, एक एकल चरण में भी ऐसा ही कर सकते हैं।

l = [[12587961, 0.7777777777777778], [12587970, 0.5172413793103449], [12587979, 0.3968253968253968], [12587982, 0.88], [12587984, 0.8484848484848485], [12587992, 0.7777777777777778], [12587995, 0.8070175438596491], [12588015, 0.4358974358974359], [12588023, 0.8985507246376812], [12588037, 0.5555555555555555], [12588042, 0.9473684210526315]] 
max_sub = max(l, key=lambda x: x[1]) 
max_val = max_sub[1] 
max_index = max_sub[0] 
-2

सरल

list = [[12587961, 0.7777777777777778], [12587970, 0.5172413793103449], [12587979, 0.3968253968253968], [12587982, 0.88], [12587984, 0.8484848484848485], [12587992, 0.7777777777777778], [12587995, 0.8070175438596491], [12588015, 0.4358974358974359], [12588023, 0.8985507246376812], [12588037, 0.5555555555555555], [12588042, 0.9473684210526315]] 
list2 = [] 

for x in list: 
    list2.append(x[1]) 
print "index->" + str(list[list2.index(max(list2))][0]) 
print "max value->" + str(list[list2.index(max(list2))][1]) 
0
allData = [[12587961, 0.7777777777777778], [12587970, 0.5172413793103449], [12587979, 0.3968253968253968], [12587982, 0.88], [12587984, 0.8484848484848485], [12587992, 0.7777777777777778], [12587995, 0.8070175438596491], [12588015, 0.4358974358974359], [12588023, 0.8985507246376812], [12588037, 0.5555555555555555], [12588042, 0.9473684210526315]] 

listOfSecondData = [i[1] for i in allData] 
result = allData[listOfSecondData.index(max(listOfSecondData))][0] 

print(result) 
#Output: 12588042 
संबंधित मुद्दे