Словарное значение путешествия

Мне нужно перемещать значения словаря в одном цикле for, чтобы добавлять и сравнивать значения. Вот мой словарь.

Я знаю об итерации словаря на основе ключа, но не уверен, можем ли мы выполнять итерацию на основе индекса значений словаря.

dict = {
        0: [1,2,3,4,7]
        1: [2,4,6,9,0]
        2: [4,6,8,2,1]

            }

если я перебираю ключ-значение, это мне не поможет. Мне нужно выполнить цикл for для каждого индекса списка значений.

Предположение: длина списка для каждого словарного ключа будет одинаковой.

Total   highest_class
7       2
12      2
17      2
15      1
8       0

По сути, суммируйте все числа из значения словаря по одному и тому же индексу, а также возвращайте, какой ключ имеет наибольшее число.

Вы не можете сначала использовать список вместо dict?

Dorian Turba 25.07.2019 09:08

Здравствуйте и добро пожаловать в StackOverflow. Пожалуйста, найдите время, чтобы прочитать страницу справки, особенно разделы «На какие темы я могу здесь спросить?» и «Каких вопросов мне следует избегать?». И что еще более важно, пожалуйста, прочитайте контрольный список вопросов о переполнении стека. Вы также можете узнать о Минимальные, полные и проверяемые примеры.

sophros 25.07.2019 09:09

@Dorian Turba, я не могу использовать список, потому что не знаю, какое будет количество ключей. Количество ключей будет динамическим и может быть любым. Одним из решений является то, что я могу преобразовать его в фрейм данных pandas и выполнить остальную часть операции, но я думаю, смогу ли я добиться успеха с помощью словаря, который будет отличным, и избежать дополнительных библиотек.

Pallav Patel 25.07.2019 09:12

Почему ваш вывод 5 строк, но только 3 строки в dict?

Dorian Turba 25.07.2019 09:20

@Dorian Это то же самое, что и количество элементов в списке. exm: во-первых, 1 + 2 + 4 = 7, а 4 является самым высоким, который принадлежит ключу 2. поэтому это 7 (сумма первых элементов) и 2 (ключ, которому принадлежит 4).

Pallav Patel 25.07.2019 09:23

Хорошо я понял. Я не знаю, как это решить без "цикла for для каждого индекса списка значений"

Dorian Turba 25.07.2019 09:25

Проверьте мое редактирование!

ncica 25.07.2019 11:19
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
130
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Насколько я понял, что вы хотите. Это может помочь.

mydict = {
        0: [1,2,3,4,7],
        1: [20,4,6,9,0],
        2: [4,6,8,2,1]

            }
maxElement = {"highest_class":None,
    "Total":-1
}

for key,value in mydict.items():
    print(sum(value) , maxElement["Total"])
    if sum(value) > maxElement["Total"]:
        maxElement["highest_class"] = key
        maxElement["Total"] = sum(value)

print(maxElement)
Ответ принят как подходящий
import pandas as pd
dict = {
        0: [1,2,3,4,7],
        1:  [2,4,6,9,0],
        2:  [4,6,8,2,1]
        }

data = [(sum(item),item.index(max(item))) for item in list(zip(*dict.values()))]

df = pd.DataFrame(data, columns =['Total', 'highest_class'])
print (df)

выход:

   Total  highest_class
0      7              2
1     12              2
2     17              2
3     15              1
4      8              0

Обновлено:

data = [(sum(item),item.index(max(item))) for item in list(zip(*dict.values()))]

print ('Total', 'highest_class')
for item in data:
    print ("{:<10} {:<10}".format(item[0], item[1]))

выход:

Total highest_class
7          2         
12         2         
17         2         
15         1         
8          0    

Другие вопросы по теме