给字典赋值
Assigning values to a dictionary
我有一本字典,其中包含名称的键和值的空列表。
我有一个假设分数的随机数生成器。
eg.(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))
然后使用人们可能在测试中获得的钟形曲线从以前的数据中生成随机数:
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
任何帮助都会很棒。
@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)
此示例代码将汇总为每个单独的键输入的所有分值,然后按相反顺序按值对它们进行排序,返回包含键和总分值的元组列表。
希望这能回答您的问题。
我有一本字典,其中包含名称的键和值的空列表。 我有一个假设分数的随机数生成器。 eg.(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))
然后使用人们可能在测试中获得的钟形曲线从以前的数据中生成随机数:
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
任何帮助都会很棒。
@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)
此示例代码将汇总为每个单独的键输入的所有分值,然后按相反顺序按值对它们进行排序,返回包含键和总分值的元组列表。
希望这能回答您的问题。