우연히 Medium에서 *Coding Tip: Try to Code Without If-statements - samerbina*을 접하게 되면서 교내 학식 크롤러 ‘jejunuMeals‘를 if문 없이 새로 작성해봤습니다.
딕셔너리를 사용하여 줄여보자 if문으로 제어하는 weekday , atom 을 딕셔너리 구조로 대체한다면 코드를 상당히 절약할 수 있을 것 같았다.
for index, atom in enumerate(data): if index == 1 or index == 5 or index == 9 or index == 13 or index == 17: weekday = weekday + 1 yaml[weekday]['점심'][atom['정식'] = atom[2] yaml[weekday]['저녁'][atom['정식']] = atom[3] elif index == 2 or index == 6 or index == 10 or index == 14 or index == 18: yaml[weekday]['점심'][atom['특식']] = atom[1] yaml[weekday]['저녁'][atom['특식']] = atom[2] elif index == 3 or index == 7 or index == 11 or index == 15 or index == 19: yaml[weekday]['점심'][atom['양식']] = atom[1] yaml[weekday]['저녁'][atom['양식']] = atom[2] elif index == 4 or index == 8 or index == 12 or index == 16 or index == 20: yaml[weekday]['점심'][atom['중식']] = atom[1] yaml[weekday]['저녁'][atom['중식']] = atom[2] return toYaml 여러 키에 같은 값을 대입하기 flags = {(1, 5, 9, 13): 2} # 처음에 생각했던 방법인데 안됨 flags = dict.fromkeys([1, 5, 9, 13], 2) # 되지만 각각의 키들의 값이 동알한 메모리를 참조함 flags = {k:2 for v in [1, 4, 9, 13]} # 컴프리헨션으로 각자 다른 참조 가능 flags 딕셔너리로 atom 을 제어하기 위해 여러 키에 같은 값을 대입하는 방법을 생각해봤다.
...