์ฝ๋ ์์ฑ์ ํ๋ค ๋ณด๋ฉด ํญ์ ์์ด๋ฒ๋ฆฌ๊ฑฐ๋ ๊ธฐ์ต์ด ์ ๋์ง ์๋ ๊ธฐ๋ฅ๋ค์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋๋ผ ๋ง์ ํ ๋๋ ๊ฐ๋ ๋จ์ด๊ฐ ์๊ฐ์ด ์ ๋ ๋์ฒ๋ผ ๋ง์ด์ฃ ใ ใ ๊ดํ ์ฝ๋ฉํ๋ ์ฌ๋๋ค์ด ๊ตฌ๊ธ์ "์ "์ด๋ผ๊ณ ํ๋ ๊ฒ ์๋๋๋ค. ChatGPT๊ฐ ๋ง์ดํฌ๋ก์ํํธ์ ๊ฒ์์์ง Bing์ ์ ํ์ฌ๋ง ๋๋ค๋ฉด ์์ผ๋ก ๊ฐ๋ฐ ์์ฐ์ฑ์ ๋๋์ฑ ํฅ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์๊ธฐ๊ฐ ์กฐ๊ธ ์๋๋ฐ, ํ์ฌ์์๋ ์ทจ๋ฏธ๋ก๋ ์ฝ๋ฉ์ ํ ๋ ์์ฃผ ๊น๋จน๋ ๊ธฐ๋ฅ๋ค์ด ์์ต๋๋ค. List์์ ์๋ List๋ฅผ ํ๋์ List๋ก ๋ณํฉํ๋ค๋์ง, Dictionary ์์ ์๋ ํค ๊ฐ๋ค์ ์ด๋ป๊ฒ ์ ๋ ฌํ๋์ง ๋ฑ ์์ฃผ ์ฌ์ฉํ์ง๋ง ๋งค๋ฒ ์ธ์ฐ๋ ๋ฐ๋ ์คํจํ๋ ์ฝ๋๋ค์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ฒ ํฌ์คํธ์์๋ ์์ฃผ ์ฌ์ฉํ๋ List์ Dictionary ๊ธฐ๋ฅ๋ค์ ๋ํด ์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค.
1. ๋ฆฌ์คํธ ์์ ๋ฆฌ์คํธ๋ค์ ํ๋์ ๋ฆฌ์คํธ๋ก ํฉ์น๊ธฐ
ํฌ๊ฒ ๋ค ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
`For`๋ฌธ์ ํ ๋ฒ ํน์ ๋ ๋ฒ ์ฌ์ฉํ์ฌ list์ ๋ฉ์๋์ธ. append() ์. extend()๋ฅผ ์ฌ์ฉํด์ ํด๊ฒฐํ ์ ์๊ณ , List comprehension์ ์ฌ์ฉํด์ ํ ์ค๋ก ์ ๋ฆฌํ ์๋ ์์ต๋๋ค. ๋ํ ๋ด์ฅํจ์์ธ itertools์ chain์ ์ด์ฉํด์ ํด๊ฒฐํ ์๋ ์์ต๋๋ค. ์ด๋ ๊ฒ์ด ๋ ๋ซ๋ค๊ณ ๋งํ๊ธฐ์๋ ์ด๋ ต์ต๋๋ค. ์ด๋ค ๋ฐฉ๋ฒ์ ์ฝ๋๊ฐ ๋ฌด์์ ํ๋์ง ๋ ์ฝ๊ฒ ์์๋ณผ ์ ์๋ค๋ ์ฅ์ ์ด ์๊ณ , ์ด๋ค ๋ฐฉ๋ฒ์ ์ฝ๋๊ฐ ์ฐจ์งํ๋ ๊ณต๊ฐ์ด ์ ์ด์ ธ์ ๊ด๋ฆฌํ๊ณ ๋ณด๊ธฐ์ ๋ ํธํฉ๋๋ค.
# ์๋ธ๋ฆฌ์คํธ
sublist_1 = ['์นด์ง๋
ธ','์ค์ง์ด๊ฒ์','๋ ๊ธ๋ก๋ฆฌ']
sublist_2 = ['์ฌ๋ฒ์ง ๋ง๋ด์๋ค', '์นด์ง๋
ธ', '์๋
์ฌํ']
sublist_3 = ['๋ฎ๊ณผ๋ฐค', '์ฌ์ฆ๋ฐ์ด', '์๋ฆฌ๋จ', '๋ฏธ์']
sublist_4 = ['์ข
์ด์์ง','์ฐ๋ฆฌ๋ค์ ๋ธ๋ฃจ์ค', '๋ฉ๋ก๊ฐ์ฒด์ง']
# ์ฌ๋ฌ ๊ฐ์ ์๋ธ๋ฆฌ์คํธ๋ก ๋ ๋ฆฌ์คํธ
lst = [sublist_1, sublist_2, sublist_3, sublist_4]
# ๋ชจ๋ ์์๋ฅผ ํ๋์ ๋ฆฌ์คํธ๋ก ํฉ์น๊ธฐ
## ๋ฐฉ๋ฒ 1: List Comprehension
def method1(lst):
return [item for sublist in lst for item in sublist]
## ๋ฐฉ๋ฒ 2: Looping (์ฝ๋๊ฐ ๊ธธ์ด์ ์ง์ ๋ถํด์ง์ง๋ง, readability๋ ๋ ์ข์)
def method2(lst):
result = []
for sublist in lst:
for item in sublist:
result.append(item)
return result
# ๋ฐฉ๋ฒ 3: extend ์ฌ์ฉ
def method3(lst):
result = []
for sublist in lst:
result.extend(sublist)
return result
## ๋ฐฉ๋ฒ 4: ๋ด์ฅํจ์ itertools.chain() ์ฌ์ฉ --> sublist๊ฐ ๋ง์์ง๋ฉด ๊ฐ์ฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ์
๋๋ค
from itertools import chain
def method4_a(lst):
return list(chain(*lst))
def method4_b(lst):
return list(chain.from_iterable(lst)) # ํน์ ์ด๋ ๊ฒ๋ ๊ฐ๋ฅ
2. ๋ฌธ์์ด๋ก ํํ๋ ๋ฆฌ์คํธ, ๋์ ๋๋ฆฌ๋ฅผ ์ฝ๋ ๋ฐฉ๋ฒ
๋ฆฌ์คํธ๋ ๋์ ๋๋ฆฌ๋ฅผ pandas.DataFrame์ ์ ์ฅํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ, ๊ผญ ๋ถ๋ฌ์ค๋ฉด ์ฃ๋ค ๋ฌธ์์ด ํํ๋ก ๋์ด ์์ด ๋๊ฐํ ๋๊ฐ ์์ต๋๋ค. ๊ทธ๋ด ๋ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
# Built-in ๋ด์ฅํจ์ ์ฌ์ฉ
from ast import literal_eval
string = '["์ด","๋ฐ์ดํฐ๋","๋ฆฌ์คํธ","์ผ๊น์?","๋ฌธ์์ด","์ผ๊น์?"]'
lst = literal_eval(string)
print(lst)
['์ด', '๋ฐ์ดํฐ๋', '๋ฆฌ์คํธ', '์ผ๊น์?', '๋ฌธ์์ด', '์ผ๊น์?']
3. ๋์ ๋๋ฆฌ๋ฅผ Key ๊ฐ ํน์ Value ๊ฐ์ผ๋ก ์ ๋ ฌํ๊ธฐ
๋์ ๋๋ฆฌ์ ์ ์ฅ๋ ๊ฐ์ ์ ๋ ฌํ๊ณ ์ถ์ ๋๊ฐ ์์ต๋๋ค. ํ์ง๋ง, ๋์ ๋๋ฆฌ์ ๊ฒฝ์ฐ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋ผ๋ ๊ฐ๋ ์ด ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ฝ๋๋ฅผ ์ง๋ค๊ฐ ๋งํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์๋์ ๊ฐ์ด OrderedDict๋ฅผ ์ฌ์ฉํ๋ฉด ํธํฉ๋๋ค.
from collections import OrderedDict
from operator import itemgetter
apt = {'Mapo': 12, 'Gangnam': 22,
'Songpa': 16, 'Songdo': 8, 'Hannam': 20}
# Key ๊ฐ์ผ๋ก ์ ๋ ฌ (์ค๋ฆ์ฐจ์)
result1 = OrderedDict(sorted(apt.items()))
# Value ๊ฐ์ผ๋ก ์ ๋ ฌ (์ค๋ฆ์ฐจ์)
result2 = OrderedDict(sorted(apt.items(), key=itemgetter(1)))
# Key ๊ฐ์ผ๋ก ์ ๋ ฌ (๋ด๋ฆผ์ฐจ์)
# result3 = OrderedDict(sorted(apt.items(), reverse=True))
# Value ๊ฐ์ผ๋ก ์ ๋ ฌ (๋ด๋ฆผ์ฐจ์)
# result4 = OrderedDict(sorted(apt.items(), key=itemgetter(1), reverse=True))
result1
key ๊ฐ์ ์ค๋ฆ์ฐจ์์ธ a, b, c, d.. ์์๋ก ์ ๋ ฌ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
OrderedDict([('Gangnam', 22), ('Hannam', 20), ('Mapo', 12), ('Songdo', 8), ('Songpa', 16)])
result2
value ๊ฐ์ ์ค๋ฆ์ฐจ์์ธ 1, 2, 3, 4.. ์์๋ก ์ ๋ ฌ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
OrderedDict([('Songdo', 8), ('Mapo', 12), ('Songpa', 16), ('Hannam', 20), ('Gangnam', 22)])
๋ง์ ์ฐ๋ ค๋๊น ์๊ฐ์ด ๋ง์ด ๋์ง๋ ์๋ค์...
์ด ํฌ์คํธ์ ์กฐ๊ธ์ฉ ์ถ๊ฐํด ๋๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค.
๋๊ธ