2016-02-29 8 views
0

Мне нужно узнать максимальное значение в каждой строке списка, а затем вернуть его в формате словаря. Я не хочу использовать max() здесь. так, что я попытался это:Возврат максимального значения строки в формате словаря

def maximum_value(my_list): 
    k=my_list 
    my_max_list= [] 
    dic={} 
    for number in range(len(k)): 
     for m in range(len(k[number])): 
      my_max = k[number][0] 
      a= k[number] 
      for num in a: 
       if (my_max < num): 
        my_max= num 
     new_list1=['row', number ,'max',my_max] 
     my_max_list.append(new_list1) 
    return my_max_list 

, который выводит это:

[['row', 0, 'max', 13], ['row', 1, 'max', 12], ['row', 2, 'max', 20], ['row', 3, 'max', 8]] 

Я почти в ответ, но я хочу, чтобы получить выход так:

{'row 0 max': 13, 'row 1 max': 12, 'row 3 max': 8, 'row 2 max': 20} 

так, чтобы получить это, что я пробовал:

from collections import defaultdict 
for item in my_max_list: 
    key= "".join(item[:-1]) 
    dic.setdefault(key,[]).append(item[-1]) 

Но это не помогает мне получить вышеупомянутый вывод. Любые предложения, чтобы получить желаемый результат, пожалуйста. Спасибо

вход Я дал это:

my_list=[[5, 0, 0, 0, 13],[0, 12, 0, 0],[20, 0, 11, 0],[6, 0, 0, 8]] 

ответ

1

Пожалуйста, проверьте ниже функции.

Я сделал некоторые изменения, как вы хотите.

def maximum_value(my_list): 
     k=my_list 
     dict={} 
     for number in range(len(k)): 
      for m in range(len(k[number])): 
       my_max = k[number][0] 
       a= k[number] 
       for num in a: 
        if (my_max < num): 
         my_max= num 
       key = 'row ' + `number` +' max' 
       dict[key] = my_max 
     return dict 

    print maximum_value([[2,4,5,6,7,9],[6,4,7],[3,5,2]]) 

Ниже приводится выход

{'row 2 max': 5, 'row 1 max': 7, 'row 0 max': 9} 

Надеется, что это помогает.

Рад, если вы могли бы получить эту работу

Ниже приводится измененный код Вы можете использовать упорядоченный Dict

from collections import OrderedDict 
    def maximum_value(my_list): 
     k=my_list 
     my_max_list= [] 
     dict=OrderedDict() 
     for number in range(len(k)): 
      for m in range(len(k[number])): 
       my_max = k[number][0] 
       a= k[number] 
       for num in a: 
        if (my_max < num): 
         my_max= num 
       key = 'row ' + `number` +' max' 
       dict[key] = my_max 

     for k, v in dict.items(): 
     print k, v 


    maximum_value([[5, 0, 0, 0, 13],[0, 12, 0, 0],[20, 0, 11, 0],[6, 0, 0, 8]]) 
+0

Можете ли вы предоставить мне свой ввод – Rohit

+0

Большое вам спасибо :) – rocky25bee

+0

Рад помочь вам – Rohit

2

Это должно работать:

from collections import OrderedDict 

my_list = [[5, 0, 0, 0, 13], [0, 12, 0, 0], [20, 0, 11, 0], [6, 0, 0, 8]] 

my_list_max = OrderedDict() 

for i, l in enumerate(my_list): 
    my_max = l[0] 
    for j in l: 
     if j > my_max: 
      my_max = j 
    key = "row " + str(i) + " max" 
    my_list_max[key] = my_max 


print(my_list_max) 
print(my_list_max['row 1 max']) 
+0

Огромное вам спасибо :) Я изучаю различные возможности. Он должен быть в формате словаря. Он выводит формат списка. В любом случае спасибо :) – rocky25bee

+0

Добро пожаловать, но почему вы думаете, что он выводит «список»? Он выводит 'OrderedDict', который является подклассом встроенного словаря. Я отредактировал ответ, чтобы включить в конец строку, демонстрирующую этот факт. –

+0

Да. но я хотел иметь ключ: значение пары формат – rocky25bee

Смежные вопросы