Мне нужно перемещать значения словаря в одном цикле 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
По сути, суммируйте все числа из значения словаря по одному и тому же индексу, а также возвращайте, какой ключ имеет наибольшее число.
Здравствуйте и добро пожаловать в StackOverflow. Пожалуйста, найдите время, чтобы прочитать страницу справки, особенно разделы «На какие темы я могу здесь спросить?» и «Каких вопросов мне следует избегать?». И что еще более важно, пожалуйста, прочитайте контрольный список вопросов о переполнении стека. Вы также можете узнать о Минимальные, полные и проверяемые примеры.
@Dorian Turba, я не могу использовать список, потому что не знаю, какое будет количество ключей. Количество ключей будет динамическим и может быть любым. Одним из решений является то, что я могу преобразовать его в фрейм данных pandas и выполнить остальную часть операции, но я думаю, смогу ли я добиться успеха с помощью словаря, который будет отличным, и избежать дополнительных библиотек.
Почему ваш вывод 5 строк, но только 3 строки в dict?
@Dorian Это то же самое, что и количество элементов в списке. exm: во-первых, 1 + 2 + 4 = 7, а 4 является самым высоким, который принадлежит ключу 2. поэтому это 7 (сумма первых элементов) и 2 (ключ, которому принадлежит 4).
Хорошо я понял. Я не знаю, как это решить без "цикла for для каждого индекса списка значений"
Проверьте мое редактирование!





Насколько я понял, что вы хотите. Это может помочь.
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
Вы не можете сначала использовать список вместо dict?