2012-11-28 5 views
0

그래서 각 하위 목록의 7 개 위치와 같은 사람들의 요일별 선호 목록 목록이 주어지면 첫 번째 위치는 6 점, 두 번째 5, 세 번째 4, 제 1, 제 2, 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']] 

기능을 내가 출력 가장 높은 점수를 일의 튜플을해야하고, 그리고 전체 지점의 목록입니다 day_week의 순서로 매일의. 위에서 출력은 다음과 같습니다.

('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

냄새 나는 숙제를 좋아합니다. – asheeshr

+0

저를 곤란하게 한 비단뱀 책에서 나온 질문입니다. 숙제가 될 것 같아요.하지만 할당받지 못했습니다. – pythonnoob

답변

0

필요 의심 수학 마녀를 제외하고 아무것도 가져 캔트. enumerate 함수가이를 수행합니다! 수동으로 0으로 모든 것을 초기화하기보다는

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

예 감사 : D – pythonnoob

관련 문제