2015-10-20 23 views
5

タプルを含むリストがあります。各タプル内にリストと整数値があります タプルのリスト内で最小値を検索する

Mylist = [([1,1,3], 3),([1,1,3], 30),([2,2,3], 15),([1,3,3], 2)] 

私はこのリストは、このタプルを返すようにする([1,3,3]、2) のでマイリスト[I] [1] =リストにおける分である2。 組み込み関数min()は実際にはそうではありません。Mylist [i] [0]

実際のリストに基づいて比較します2つの項目が含まれています: しかし、私はどのようにリストでそれを行うか分かっていない.. 10項目を言う!

def min(a,x,b,y): 
    t = a 
    if x >= y: 
     t = b 
    return t 

答えて

6
Mylist = [([1,1,3], 3),([1,1,3], 30),([2,2,3], 15),([1,3,3], 2)] 
print min(Mylist,key=lambda x:x[1]) 

あなたはlambdaを使用してkeyminに機能を提供することができます。

出力:([1, 3, 3], 2)

2

あなたが最初の値を使用して、リストを保存する場合は、あなただけの直接minsortedを使用することができます。

Mylist = [(3, [1,1,3]), (30, [1,1,3]), (15, [2,2,3]),(2, [1,3,3])] 
min(Mylist) 

出力:(2, [1, 3, 3])

0

をするだけ関心のために、ここです機能的アプローチ:

def get_min_tuple(l): 
    def get_index(lst, num, index=0): 
     if num in lst[index]: 
      return index 
     else: 
      return get_index(lst, num, index + 1) 
    def find_min(l, smallest=None, assigned=False): 
     if l == []: 
      return smallest 
     else: 
      if not assigned: 
       smallest = l[0][1] 
       assigned = True 
      else: 
       if l[0][1] < smallest: 
        smallest = l[0][1] 
      return find_min(l[1:], smallest, assigned) 
    return l[get_index(l, find_min(l))] 

もちろん、min関数のキーを提供する1つのライナーは、実用的な意味ではもっと便利ですが、私は教育目的でこれを共有すると思っていました。例えば

1

私の解決策

myList = [([1, 1, 3], 3), ([1, 1, 3], 30), ([2, 2, 3], 15), ([1, 3, 3], 2)] 
minValue = [i for i in myList if i[1] == min([x[1] for x in myList])] 

分値とリターン項目のリストを

[([1, 3, 3], 2)] 

あなたは

myList = [([1, 1, 3], 3), ([1, 1, 3], 30), ([2, 2, 3], 15), ([1, 3, 3], 2), ([1, 1, 3], 2)] 

のようなリストを持っている場合、結果は

になります
[([1, 3, 3], 2),([1, 1, 3], 2)] 

あなたがこれを必要とするが、動作するかわからない。:D

-1

時間計算さて= N

Mylist = [([1,1,3], 3),([1,1,3], 30),([2,2,3], 15),([1,3,3], 2)] 
minv=MyList[0][1] 
minv1=MyList[0][0] 
for lst in MyList: 
    if(lst[1]<minv): 
     minv=lst[1] 
     minv1=lst[0] 
print(tuple(minv1,minv)) 
+0

.......良いですか? @BarryHurley – Karthik

関連する問題