파이썬 리스트 중복제거 !

조회수 1396회

과제 : 조추첨 프로그램을 한번에 8개조가 중복없이 추첨되도록 코드를 수정!

import random
import tkinter

# 조 추첨 기능
def lotto():
    teams = [
        {'1조': ['김일이', '이삼사', '삼사오', '구팔칠']},
        {'2조': ['이민기', '한예슬', '장동건', '이병헌']},
        {'3조': ['이미선', '구미호', '신짱구', '김철수']},
        {'4조': ['신형만', '노진구', '퉁퉁이', '김개똥']},
        {'5조': ['홍길동', '김가나', '이새우', '유미래', '나미녀']},
        {'6조': ['코로나', '조추첨', '박나무', '김서방', '강대박']}
    ]

    team = random.choice(teams)  # 팀 추첨. 리턴은 딕셔너리
    leader = list(team.keys())

    texts = leader[0] + '\n' + str(team[leader[0]]) + '\n' + "조장 : {0}".format(
        team[leader[0]][0]) + '\n' + f'발표자 : {random.choice(team[leader[0]])}'
    lbl_people.config(text = texts)
    #print(texts)

# 엔터 키가 눌리는 이벤트가 발생했을 때 lotto함수 호출
def lotto_enter(ev):
    lotto()

# 메인함수. 프론트엔드
if __name__ == '__main__':
    win = tkinter.Tk() # 윈도우 생성
    win.title("보건의료정보프로젝트")
    win.geometry("400x150")

    # 레이블, 버튼 생성, 버튼은 lotto함수와 연결
    lbl_people = tkinter.Label(text="발표 조 추첨")
    btn_lotto = tkinter.Button(text="조 추첨", bg="yellow", fg="green", command=lotto)

    # 엔터키 처리
    win.bind('<Return>', lotto_enter)

    # 윈도우에 레이블과 버튼 부착
    lbl_people.pack()
    btn_lotto.pack(fill='x')

    li = ['1조','2조','3조','4조','5조','6조']
    choiceList = random.choice(li)


    win.mainloop()

조 추첨하는 프로그램이구요 6개조가 중복없이 랜덤으로 추출되게 해야하는데 어디를 수정해야할지모르겠어서요. 아무리 코드 다 넣어봐도 계속 오류가 나는데 어떻게 해결해야할까요?

1 답변

  • 중복 없이 추출하는건 간단합니다.

    추출할 때 해당 요소를 기존 리스트에서 제거하거나, 추출할 때 해당 요소가 이미 추출된 것인지 확인한 다음 추출하도록 하면됩니다.

    다른 경우라면 좀 더 도와드리겠지만.. 과제는 스스로 해야하는 것이기 때문에 이 정도면 충분하다고 생각합니다.

    리스트 중복 제거의 경우 비슷한 질문이 많이 있었기 때문에 조금만 찾아봐도 많은 자료들을 찾을 수 있을 겁니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)