我有一本字典,里面有一个名字键和一个空值列表。 我有一个假设得分的随机数生成器。 例如:(name:,[,,,,,])(测试的得分是0到100) 我正在尝试将6种不同的测试分配给不同数量的人。然后,我将使用自己制作的算法为他们的得分总得分,然后将它们置于自上而下的位置。 id可能会沿着我制定的这些算法使用某些东西,但目前我正在尝试了解如何将值分配给列表。这是用于根据有效的测试数字计算出总系列分数的代码。
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
任何帮助都是伟大的。
答案 0 :(得分:0)
@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)
该示例代码将汇总为每个键输入的所有得分值,然后按相反的顺序对它们进行排序,返回包含键和总得分值的元组列表。
希望这能回答您的问题。