์ฃผ์
๊ณต์ฅ์ ์ผ๋ณ ์ถํด๊ทผ ๊ธฐ๋ก์ ํ์ฉํ์ฌ ๊ฐ์ฅ ์ผ์ฐ ์ถ๊ทผํ๋ ๊ทผ๋ฌด์์ ๊ฐ์ฅ ๋ฆ๊ฒ ํด๊ทผํ๋ ๊ทผ๋ฌด์์ ์ฑํจ๊ณผ ์๊ฐ์ ํ์ธํ ์ ์๋ ํจ์ ์์ฑ
๋ฐ์ดํฐ ํ์
- ํจ์๋ช : records
'YYYY-MM-DD' : {
'worker name1' : ('์ถ๊ทผ ์๊ฐ', 'ํด๊ทผ ์๊ฐ'),
'worker name2' : ('์ถ๊ทผ ์๊ฐ', 'ํด๊ทผ ์๊ฐ'),
.....}
์๊ตฌ์ฌํญ
1. ์ถํด๊ทผ ๊ธฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋์ ๋๋ฆฌ ์ ์
2. ๊ฐ์ฅ ์ผ์ฐ ์ถ๊ทผํ๋ ๊ทผ๋ฌด์๋ฅผ ์ฐพ๋ ํจ์ 'earliest_worker(records)'
3. ๊ฐ์ฅ ๋ฆ๊ฒ ํด๊ทผํ๋ ๊ทผ๋ฌด์๋ฅผ ์ฐพ๋ ํจ์ 'latest_worker(records)'
์์ ๋ฐ์ดํฐ
records = {
'2024-07-01' : {
'์ ์ ' : ('08:00', '17:00'),
'์์' : ('09:00', '18:00'),
'์์ง' : ('10:00', '19:00')
},
'2024-07-02' : {
'์ ์ ' : ('08:15', '17:40'),
'์์' : ('08:00', '17:00'),
'์์ง' : ('09:00', '18:00')
}
}
์ต์ข ์ถ๋ ฅ๊ฐ
๊ฐ์ฅ ์ผ์ฐ ์ถ๊ทผํ ๊ทผ๋ฌด์์ ์ถ๊ทผ ์๊ฐ {'2024-07-01': ('์ ์ ', '08:00'), '2024-07-02': ('์์', '08:00')}
๊ฐ์ฅ ๋ฆ๊ฒ ํด๊ทผํ ๊ทผ๋ฌด์์ ํด๊ทผ ์๊ฐ {'2024-07-01': ('์์ง', '19:00'), '2024-07-02': ('์์ง', '18:00')}
ํจ์ ์์ฑํ๊ธฐ
earliest_work ํจ์
# ์ผ์ฐ ์ถ๊ทผํ๋ ๊ทผ๋ฌด์
def earliest_work(records):
earliest_times = {}
for date, workers in records.items():
earliest_worker, earliest_time = min(workers.items(), key=lambda x: x[1][0])
earliest_times[date] = (earliest_worker, earliest_time[0])
return earliest_times
def earliest_work(records):
- earliest_work ํจ์๋ฅผ ์ ์ํ๋ค
- records๋ผ๋ ๋์ ๋๋ฆฌ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋๋ค.
earliest_times = {}
- ๊ฒฐ๊ณผ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํด ๋์ ๋๋ฆฌ๋ฅผ ์ด๊ธฐํํ๋ค.
for date, workers in records.items() :
- records ๋์ ๋๋ฆฌ์ ๊ฐ ๋ ์ง(date)์ ํด๋น ๋ ์ง์ ๊ทผ๋ฌด์ ์ถํด๊ทผ ๊ธฐ๋ก(workers) ์ํ
- records ๊ฐ์์ (date:workers)๋ฅผ ์๋ฏธํ๋ค.
earliest_worker, ealiest_time = min(workers.items(), key=lambda x: x[1][0])
- earliest_time์ ๊ฐ์ฅ ๋นจ๋ฆฌ ์ถ๊ทผํ ์ฌ๋์ ์๊ฐ์ ํํํด์ผ ํ๋ค.
- workers ๊ฐ์ ํํ๋ '์ด๋ฆ' : ('์ถ๊ทผ์๊ฐ' : 'ํด๊ทผ์๊ฐ')
- ์์ ๊ฐ๊ธฐ ๋๋ฌธ์ workers์ ๊ฐ์ '์ถ๊ทผ์๊ฐ' ์ค, ์ต์๊ฐ์ ์ฐพ์์ผ ํ๋ฏ๋ก min์ ์ด๋ค.
- index๋ก ์น๋ฉด ('์ถ๊ทผ์๊ฐ' : 'ํด๊ทผ์๊ฐ')์ [1], ์ถ๊ทผ์๊ฐ์ [0]
earliest_times[date] = (ealiest_worker, earliest_time[0])
- ์ด์ ์ต์ข ์ ์ผ๋ก ๋์ ๋๋ฆฌ์ ๋ฃ์ ๊ฐ์ ์ ๋ ฅํ๋ค.
- earliest_times ๋์ ๋๋ฆฌ์ ๋ ์ง(date)๋ฅผ ํค๋ก ์ฌ์ฉํ๊ณ ๊ทผ๋ฌด์ ์ด๋ฆ(earliest_worker)๊ณผ ์ถ๊ทผ ์๊ฐ(earliest_time[0])์ ํํ๋ก ์ ์ฅํ๋ค.
return earliest_times
- ๊ฒฐ๊ณผ ๋ฐํ
latest_work ํจ์
# ๋ฆ๊ฒ ํด๊ทผํ๋ ๊ทผ๋ฌด์
def latest_work(records) :
latest_times = {}
for date, workers in records.items() :
latest_worker, latest_time = max(workers.items(), key=lambda x:x[1][1])
latest_times[date] = (latest_worker, latest_time[1])
return latest_times
- earliest์ ๊ฑฐ์ ๋์ผํ์ง๋ง lambda ์ ์๋ง ๋ค๋ฅด๋ค.
max(workers.items(), key=lambda x:x[1][1])
- ํด๊ทผ ์๊ฐ์ ๊ฐ์ฅ ๋ฆ์ ์๊ฐ์ ๊ณจ๋ผ์ผ ํ๊ธฐ ๋๋ฌธ์ max์ด๋ฉฐ 1์ ๊ฐ์ด๋ฏ๋ก [1]์ด๋ค.
์์ ๋ฐ์ดํฐ ์ ๋ ฅ ํ ์ถ๋ ฅํ๊ธฐ
- ์์ ๋ฐ์ดํฐ๋ ์๋ฅผ ์ฐธ์กฐ
์ถ๋ ฅ
print("๊ฐ์ฅ ์ผ์ฐ ์ถ๊ทผํ ๊ทผ๋ฌด์์ ์ถ๊ทผ ์๊ฐ", earliest_work(records))
print("๊ฐ์ฅ ๋ฆ๊ฒ ํด๊ทผํ ๊ทผ๋ฌด์์ ํด๊ทผ ์๊ฐ", latest_work(records))
์ต์ข ์ถ๋ ฅ๊ฐ
ํด๋น ๋ฐ์ดํฐ ํจ์ ์์ฑ์ ์๊ฐํ ์ด์
๋๊ท๋ชจ ์ธ์์ด ์ถํด๊ทผ ์๊ฐ์ ์ ๋ ฅํ๋ ๋๊ท๋ชจ ํ์ฌ๋ ๊ณต์ฅ์์ ํ์ฉํ ์ ์๋ค. ์ผ๋ณ๋ก ํ์ธํ ์ ์๋ค๋ ์ ์์ ์ถํด๊ทผ ์๊ฐ ๊ด๋ฆฌ์ ์ ์ฉํ๋ค. ์ฌ๊ธฐ์ ๋์๊ฐ ๊ฐ ๋ถ์๋ณ๋ก ์ง์๋ค์ ์ถํด๊ทผ ์๊ฐ์ ๊ด๋ฆฌํ ์ ์๋ ๋ฐ์ดํฐ ๊ด๋ฆฌ ์๋น์ค์ ๊ธฐ๋ฐ์ด ๋ ์ ์๋ค.
'๐ก Data Analysis > Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DA][Python] ๋ฐ์ดํฐ ๋ถ์ ์ ํ์ฉํ ์ ์๋ ๊ธฐ์ด ํจ์ (5) | 2024.07.05 |
---|