[Python] class가 원소인 배열 데이터 처리

2023. 1. 3.·🤓 기술 학습 & 공부 기록/Python

📍로그인, 로그아웃 이력으로 현재 로그인된 유저 파악하기

- 데이터 구조

class Event:
    def __init__(self, event_date, event_type, machine_name, user):
        self.date = event_date # 시간
        self.type = event_type # 로그인 or 로그아웃
        self.machine = machine_name # 접속 서버
        self.user = user # 유저

 

- 데이터 예시

events = [
    Event("2023-01-02 11:38:03", "logout", "webserver.local", "jordan"),
    Event("2023-01-02 10:19:31", "login", "mailserver.local", "jane"),
    Event("2023-01-02 09:24:52", "login", "webserver.local", "jordan"),
    Event("2023-01-02 10:23:47", "logout", "myworkstation.local", "messi"),
    Event("2023-01-01 17:33:16", "logout", "webserver.local", "messi"),
    Event("2023-01-01 12:45:56", "login", "myworkstation.local", "messi"),
    Event("2023-01-01 11:37:13", "login", "webserver.local", "messi"),
]

 

📍함수

# 클래스를 매개변수로 받아 date 프로퍼티를 반환하는 함수
def get_event_date(event):
    return event.date

# 현재 로그인된 유저를 machine 키로 딕셔너리에 추가하여 반환하는 함수
def current_users(events):
    events.sort(key=get_event_date)
    machines = {}
    for event in events:
        if event.machine not in machines:
            machines[event.machine] = set()
        if event.type == "login":
            machines[event.machine].add(event.user)
        elif event.type == "logout":
            machines[event.machine].remove(event.user)
    return machines

# 머신별 유저 목록을 출력하는 함수
def generate_report(machines):
    for machine, users in machines.items():
        if len(users) > 0:
            user_list = ", ".join(users)
            print("{} : {}".format(machine, user_list))
        else:
            print("{} : no users".format(machine))

 

📍출력 결과

users = current_users(events)
print(users) # {'webserver.local': set(), 'myworkstation.local': set(), 'mailserver.local': {'jane'}}
generate_report(users)
# webserver.local : no users
# myworkstation.local : no users
# mailserver.local : jane
'🤓 기술 학습 & 공부 기록/Python' 카테고리의 다른 글
  • [Python] 10진수를 2진수로 바꾸기
  • [Python] 워드 클라우드(word cloud) 만들기
  • [Python] 정렬(sort, sorted) 차이
  • [Python] divmod로 몫과 나머지를 한번에 구하기
지식물원
지식물원
지식이 자라는 식물원!
  • 지식물원
    지식물원
    지식물원
  • 전체
    오늘
    어제
    • 분류 전체보기 (510)
      • 🎨 프론트엔드 공부 (247)
        • JS & TS (86)
        • HTML & CSS (22)
        • React & Next (49)
        • Vue & Nuxt (22)
        • 기타 (68)
      • 🤓 기술 학습 & 공부 기록 (116)
        • Node.js (0)
        • Python (37)
        • 백엔드 (0)
        • 딥러닝 (1)
        • 컴퓨터 일반 (72)
        • 개발 인프라 (6)
      • 👨‍💻 프로젝트 경험 (6)
        • Work (0)
        • Toy (6)
      • ⚙️ 개발 팁 & 노하우 (21)
        • 프론트엔드 (6)
        • 기타 (15)
      • ☕️ 커리어 & 인터뷰 준비 (88)
        • 코딩 테스트 (88)
      • 📰 기술 트렌드 & 생각 정리 (4)
      • 📚 기타 (25)
        • 마케팅 (15)
        • 비개발서적 (10)
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

    • 모바일 접속 시 코드 하이라이팅 깨질 때
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
지식물원
[Python] class가 원소인 배열 데이터 처리
상단으로

티스토리툴바