所以给出了一个星期几的人们偏好列表的随机列表,如每个子列表中的7个位置,第一个位置值6个点,第二个5个,第三个4个,第四个4个,第三个,第二个,第二个,最后一个没有得到任何偏好点:
days_week=['mon','tues','wed','thurs','fri','sat','sun']
random_day_list=[['sat','sun','wed','thurs','mon','tues','fri'],['mon','fri','sat','sun','wed','thurs','tues'],['tues','fri','sun','sat','wed','thurs','mon']]
我正在制作的功能应该输出得分最高的元组,以及每天的总分数列表,以天数为单位。上面的输出是:
('sat',[8,7,8,5,10,14])
星期六有14分,所以这是本案例中最喜欢的日子。
到目前为止,我想到了:
day_dictionary={'mon':0,'tues':0,'wed':0,'thurs':0,'fri':0,'sat':0,'sun':0}
for i in random_day_list:
# getting into the sublist
for j in i:
if j in day_dictionary:
# stuck here: whatever position j is in (0,1,2,3,4,5,6) if its
0 add 6, 1 add 5, and so on, to day_dictionary[j]
我无法导入除数学之外的任何东西我怀疑我需要
答案 0 :(得分:0)
您需要一些方法来跟踪您所处的位置。 enumerate函数可以帮到你!
试试这个:
day_dictionary={'mon':0,'tues':0,'wed':0,'thurs':0,'fri':0,'sat':0,'sun':0}
for i in random_day_list:
for position, day in enumerate(i):
if day in day_dictionary:
day_dictionary[day] += (6 - position)
(作为未来的注释,使用a defaultdict可能会更好,而不是手动将所有内容初始化为0.但由于您无法导入任何内容,因此您的方式可以正常工作。)