Присвоение значений словарю - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть словарь, в котором есть ключ для имен и пустые списки для значений.у меня есть генератор случайных чисел для гипотетической оценки.например (имя:, [,,,,,,]) (тест оценивается от 0 до 100) я пытаюсь назначить 6 различных тестов разному количеству людей.Затем я бы использовал алгоритм, который я сделал, чтобы получить общий балл за их результаты и поставить их сверху вниз.Я, вероятно, использую что-то в этих алгоритмах, которые я сделал, но в настоящее время я пытаюсь понять, как присвоить значения списку.Это код для определения общего балла серии в соответствии с действительными числовыми тестами.

def series_score(y,choice):
while choice >1:
    y[1].remove(max(y[1]))
    choice =choice - 1
x = sum(y[1]) - max(y[1])
return x

это тип сортировки, который я бы использовал

results = [('Alice',[1, 2, 1, 1, 1, 1]),
('Bob', [3, 1, 5, 3, 2, 5]),
('Clare',[2, 3, 2, 2, 4, 2]),
('Dennis', [5, 4, 4, 4, 3, 4]),
('Eva', [4, 5, 3, 5, 5, 3])]

def sort_series(results):
    return sorted(results, key=lambda order: (sum(order[1]), order[0]))

print(sort_series(results))

, а затемслучайное число gen из предыдущих данных, используя кривую колокольчика, где люди могут попасть в тест:

import csv
import random
import operator

def sort_dis_data():
f = open('data.csv','r')
reader = csv.reader(f)
new_dict = {}

for row in reader:
    new_dict[row[0]] = random.gauss(float(row[1]), float(row[2]))

order_list = sorted(new_dict, key =lambda k: new_dict[k], reverse = False)
return order_list

любая помощь будет большой.

1 Ответ

0 голосов
/ 13 декабря 2018

@ Struggler, если вы хотите получить общее количество баллов каждого отдельного имени, введенного в словарь, а затем отсортировать их от наивысшего к наименьшему общему количеству баллов, то, я думаю, лучшим способом будет:

Вот пример кода:

dictionary = {'a': [1,2,3,4], 'b': [1,2,3,4,5], 'c': [1,2,3,4,5,6]}
for key, value in dictionary.items():
    total = sum(value)
    dictionary[key] = total

dictionary = sorted(dictionary.items(), key= lambda x: x[1], reverse=True) 

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

Надеюсь, что это отвечает на ваш вопрос.

...