๐ก ๋ณธ ํฌ์คํ ์ ์์ ๋ด์ฉ, ๊ต์ฌ, ChatGPT๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ ๋ฆฌํ ํ์ต ๊ธฐ๋ก์ ๋๋ค.
๊ธ๊ณผ ๊ทธ๋ฆผ ๋ฑ ๋ชจ๋ ์ฝํ ์ธ ์ ์ ๋ฆฌ ๋ฐ ์์ฑ์ ๋ณธ ๋ธ๋ก๊ทธ์์ ์ง์ ์ ์๋์์ต๋๋ค.
Python ๊ธฐ์ด๋ถํฐ Streamlit ๋ฐ์ดํฐ ์๊ฐํ๊น์ง ์ ๋ฆฌํ๋ ํ์ต ๊ธฐ๋ก์ ๋๋ค.
์ด ๊ธ์ '6. [ํ์ด์ฌ] set ๊ณผ frozenset' ์ ๋๋ค.
ํ์ด์ฌ์ set์ ์ฒ์ ๋ณด๋ฉด ๋ฆฌ์คํธ์ ๋น์ทํด ๋ณด์ด์ง๋ง, ์ค์ ๋ก๋ ์์ ํ ๋ค๋ฅธ ๋ชฉ์ ์ ๊ฐ์ง ์๋ฃํ์ด๋ค.
๋ฆฌ์คํธ๊ฐ "์์๋ฅผ ์ ์งํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ฉ๋"๋ผ๋ฉด,
set์ "์ค๋ณต์ ์ ๊ฑฐํ๊ณ ์์์ ํฌํจ ์ฌ๋ถ๋ฅผ ๋น ๋ฅด๊ฒ ํ์ธํ๋ ์ฉ๋"์ ํจ์ฌ ๊ฐ๊น๋ค.
๊ทธ๋์ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ, ์ค๋ณต ์ ๊ฑฐ, ๋น๊ต ์ฐ์ฐ, ํ์/ํ๊ทธ/๊ถํ ์งํฉ ์ฒ๋ฆฌ ๊ฐ์ ๊ณณ์์ ๋งค์ฐ ์์ฃผ ๋ฑ์ฅํ๋ค.
์ด๋ฒ ๊ธ์์๋ set์ ํต์ฌ ๊ฐ๋ ์ ์ ๋ฆฌํ๊ณ , ์ค๋ฌด๋ ์ค๊ธ ํ์ต ๋จ๊ณ์์ ์์๋๋ฉด ์ข์ frozenset, ํด์ ๊ฐ๋ฅ์ฑ(hashable), ๋ถ๋ถ์งํฉ ํ๋ณ ๊ฐ์ ๋ด์ฉ๊น์ง ํจ๊ป ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
set์ด๋ ๋ฌด์์ธ๊ฐ
set์ '์์๊ฐ ์๊ณ , ์ค๋ณต์ ํ์ฉํ์ง ์๋ ์๋ฃ๊ตฌ์กฐ'๋ค.
์ํ์ ์งํฉ ๊ฐ๋ ์ ๊ทธ๋๋ก ์ฝ๋๋ก ์ฎ๊ฒจ๋์ ํํ๋ผ๊ณ ์๊ฐํ๋ฉด ์ดํดํ๊ธฐ ์ฝ๋ค.
๊ฐ์ฅ ๋จผ์ ์์๋ ์ ์ ๋ค์ ๋ ๊ฐ์ง๋ค.
- ๊ฐ์ ๊ฐ์ด ์ฌ๋ฌ๋ฒ ๋ค์ด์๋ ํ๋๋ง ๋จ๋๋ค
- ์ธ๋ฑ์ค๋ก ์ ๊ทผํ ์ ์๋ค
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ด ์งํฉ์ ๋ง๋ค ์ ์๋ค.
skills = {"Python", "SQL", "Docker", "Python"}
print(skills)
์คํ ๊ฒฐ๊ณผ
{'Python', 'SQL', 'Docker'}
์ฌ๊ธฐ์ "Python"์ ๋ ๋ฒ ๋ฃ์์ง๋ง ์ค์ ์งํฉ์๋ ํ ๋ฒ๋ง ๋ค์ด๊ฐ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋ค๋ง ์ฃผ์ํ ์ ์ด ์๋ค.
set์ ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ถ๋ ฅ ์์๋ ์คํ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ณด์ผ ์ ์๋ค.
์ฆ, ์งํฉ์์๋ "๋ช ๋ฒ์งธ์ ๋ค์ด ์๋๋"๋ณด๋ค "๋ฌด์์ด ๋ค์ด ์๋๋"๊ฐ ๋ ์ค์ํ๋ค.
ํ๋ณํ์ ์ด์ฉํ ์ค๋ณต ์ ๊ฑฐ
set()์ ์ด์ฉํ ์ค๋ณต ์ ๊ฑฐ๋ ๋งค์ฐ ์์ฃผ ์ฐ๋ ํจํด์ด๋ค.
course_names = ["Python", "SQL", "SQL", "Airflow", "Python", "Docker"]
unique_courses = set(course_names)
print(unique_courses)
์คํ ๊ฒฐ๊ณผ
{'Python', 'SQL', 'Airflow', 'Docker'}
๋ฆฌ์คํธ๋ฅผ set์ผ๋ก ๋ฐ๊พธ๋ฉด ์ค๋ณต์ด ์ ๊ฑฐ๋๋ค.
๋ค๋ง ์ด ์๊ฐ ์์ ์ ๋ณด๋ ์ ์ง๋์ง ์๋๋ค.
๊ทธ๋์ "์ค๋ณต์ ์ ๊ฑฐํ๋, ์ ๋๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ์ถ๋ค"๋ฉด ๋ณดํต sorted()๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ค.
cities = ["Seoul", "Busan", "Seoul", "Jeju", "Incheon", "Busan"]
unique_cities = set(cities)
sorted_cities = sorted(unique_cities)
print(sorted_cities)
์คํ ๊ฒฐ๊ณผ
['Busan', 'Incheon', 'Jeju', 'Seoul']
์ฌ๊ธฐ์ ๊ธฐ์ตํ ์ ์ sorted()์ ๋ฐํ๊ฐ์ด set์ด ์๋๋ผ ๋ฆฌ์คํธ(list) ๋ผ๋ ์ ์ด๋ค.
์ฆ, ํ๋ฆ์ ๋ค์์ฒ๋ผ ์ดํดํ๋ฉด ๋๋ค.
- set() : ์ค๋ณต ์ ๊ฑฐ
- sorted() : ์ ๋ ฌ๋ ๋ฆฌ์คํธ ๋ฐํ
set์ ํน์ง: ์ธ๋ฑ์ฑ์ ์ ๋์ง๋ง, ์์ ์ ๊ฐ๋ฅํ๋ค
์งํฉ์ ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ฆฌ์คํธ์ฒ๋ผ ์ธ๋ฑ์ค๋ก ์ ๊ทผํ ์ ์๋ค.
tools = {"Git", "Linux", "Docker"}
tools.add("Kubernetes")
tools.discard("Terraform") # ์์ด๋ ์๋ฌ ์์
tools.remove("Git") # ์์ผ๋ฉด ์ ๊ฑฐ
print(tools)
print(sorted(tools))
์คํ ๊ฒฐ๊ณผ
{'Linux', 'Docker', 'Kubernetes'}
['Docker', 'Kubernetes', 'Linux']
์ฌ๊ธฐ์ discard()์ remove()์ ์ฐจ์ด๋ ๊ผญ ์์๋ ํ์๊ฐ ์๋ค.
- discard() : ์์๊ฐ ์์ด๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
- remove() : ์์๊ฐ ์์ผ๋ฉด KeyError๊ฐ ๋ฐ์ํ๋ค.
์๋ฅผ ๋ค์ด ์๋์ฒ๋ผ ์ฐจ์ด๋ฅผ ์ง์ ํ์ธํ ์ ์๋ค.
subjects = {"math", "english", "science"}
subjects.discard("history")
print("discard ์ดํ:", subjects)
try:
subjects.remove("history")
except KeyError as e:
print("remove ์๋ฌ:", e)
์คํ ๊ฒฐ๊ณผ
discard ์ดํ: {'math', 'english', 'science'}
remove ์๋ฌ: 'history'
๋ฐ์ดํฐ ์กด์ฌ ์ฌ๋ถ๊ฐ ํ์คํ์ง ์์ ๋ discard()๊ฐ ๋ ์์ ํ๊ฒ ๋๊ปด์ง ๋๊ฐ ๋ง์ ๊ฒ์ด๋ค.
์งํฉ ์ฐ์ฐ์ ๋งค์ฐ ์ง๊ด์ ์ด๋ค
set์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ํน์ง ์ค ํ๋๋ ์ํ์ ์งํฉ ์ฐ์ฐ์ ์ฝ๋๋ก ์์ฃผ ์์ฐ์ค๋ฝ๊ฒ ํํํ ์ ์๋ค๋ ์ ์ด๋ค.
team_a = {"Python", "SQL", "Docker", "Linux"}
team_b = {"SQL", "AWS", "Linux", "Terraform"}
print("ํฉ์งํฉ:", sorted(team_a | team_b))
print("๊ต์งํฉ:", sorted(team_a & team_b))
print("์ฐจ์งํฉ:", sorted(team_a - team_b))
print("๋์นญ ์ฐจ์งํฉ:", sorted(team_a ^ team_b))
์คํ ๊ฒฐ๊ณผ
ํฉ์งํฉ: ['AWS', 'Docker', 'Linux', 'Python', 'SQL', 'Terraform']
๊ต์งํฉ: ['Linux', 'SQL']
์ฐจ์งํฉ: ['Docker', 'Python']
๋์นญ ์ฐจ์งํฉ: ['AWS', 'Docker', 'Python', 'Terraform']
๊ฐ์ ์ฐ์ฐ์ ๋ฉ์๋ ํํ๋ก๋ ์ธ ์ ์๋ค.
print("ํฉ์งํฉ:", sorted(team_a.union(team_b)))
print("๊ต์งํฉ:", sorted(team_a.intersection(team_b)))
print("์ฐจ์งํฉ:", sorted(team_a.difference(team_b)))
print("๋์นญ ์ฐจ์งํฉ:", sorted(team_a.symmetric_difference(team_b)))
๋ฒค๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๊ทธ๋ ค๋ณด๋ฉด ์ด๋ ๋ค.

๊ฐ ์ฐ์ฐ์ ์๋ฏธ๋ฅผ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- ํฉ์งํฉ: ์์ชฝ ์ค ํ๋๋ผ๋ ํฌํจ๋ ์์ ์ ์ฒด
- ๊ต์งํฉ: ์์ชฝ ๋ชจ๋์ ํฌํจ๋ ์์
- ์ฐจ์งํฉ (team_a - team_b): ์ผ์ชฝ์๋ ์๊ณ ์ค๋ฅธ์ชฝ์๋ ์๋ ์์
- ๋์นญ ์ฐจ์งํฉ: ํ์ชฝ์๋ง ์กด์ฌํ๋ ์์
์ด ์ฐ์ฐ๋ค์ ๋จ์ํ ์์ ๋ฅผ ๋์ด ํ์ ๋น๊ต, ํ๊ทธ ๋ถ์, ๊ถํ ๊ตฌ์ฑ, ๊ธฐ์ ์คํ ๋น๊ต์ฒ๋ผ ์ค์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์์๋ ๋งค์ฐ ์ ์ฉํ๋ค.
์ฐ์ฐ์์ ๋ฉ์๋์ ์ฐจ์ด
required = {"Python", "SQL", "Git"}
candidate = ["SQL", "Git", "Excel"]
print(required.intersection(candidate))
# print(required & candidate) # TypeError
์คํ ๊ฒฐ๊ณผ
{'SQL', 'Git'}
์ถ๋ ฅ์์ ์ ์ด๋ฐ ์ฐจ์ด๊ฐ ์๊ธธ๊น?
intersection() ๊ฐ์ '๋ฉ์๋ ๋ฐฉ์'์ ๋ค๋ฅธ iterable๋ ๋ฐ์์ ๋น๊ตํ ์ ์๋ค.
๋ฐ๋ฉด &, |, -, ^ ๊ฐ์ '์ฐ์ฐ์ ๋ฐฉ์'์ ์์ชฝ ๋ชจ๋ ์งํฉ ์๋ฃํ์ด์ด์ผ ํ๋ค.
๋ฐ๋ผ์ ์ฐ์ฐ์ ๋ฐฉ์์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ๋จผ์ set()์ผ๋ก ๋ฐ๊ฟ์ฃผ์ด์ผ ํ๋ค.
print(required & set(candidate))
set์ ๋ค์ด๊ฐ ์ ์๋ ๊ฐ์ ์ ํ์ด ์๋ค : hashable(ํด์ ๊ฐ๋ฅํ ๊ฐ)
set์ ์์๋ 'hashable(ํด์ ๊ฐ๋ฅํ ๊ฐ)' ์ด์ด์ผ ํ๋ค.
์ฝ๊ฒ ๋งํด ๋ด๋ถ์ ์ผ๋ก ์์ ์ ์ผ๋ก ์๋ณ ๊ฐ๋ฅํ ๊ฐ์ด์ด์ผ ํ๋ค๋ ๋ป์ด๋ค.
๊ทธ๋์ ์ซ์, ๋ฌธ์์ด, ํํ ๊ฐ์ ๊ฒ์ด ์งํฉ ์์๊ฐ ๋ ์ ์๋ค.
valid_values = {1, 3.14, "data", (10, 20)}
print(valid_values)
์คํ ๊ฒฐ๊ณผ
{1, 3.14, 'data', (10, 20)}
๋ฐ๋ฉด ๋ฆฌ์คํธ(List)๋ ๊ฐ๋ณ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ์งํฉ์ ์์๊ฐ ๋ ์ ์๋ค.
# invalid_values = {[1, 2], [3, 4]} # TypeError
TypeError: unhashable type: 'list'
์ด ๊ฐ๋ ์ ์์ '5. [ํ์ด์ฌ] ๋์ ๋๋ฆฌ'์์ ์ดํด๋ณด์๋ key ์กฐ๊ฑด๊ณผ๋ ์ฐ๊ฒฐ๋๋ค.
์ฆ, set์ ์์๊ฐ ๋ ์ ์๋ ๊ฐ์ dict์ key๊ฐ ๋ ์ ์๋ ๊ฐ๊ณผ ๊ฑฐ์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์๊ฐํ๋ฉด ๋๋ค.
frozenset์ ๋ฌด์์ธ๊ฐ
frozenset์ ์ด๋ฆ ๊ทธ๋๋ก '์์ ํ ์ ์๋ ์งํฉ'์ด๋ค.
์ฆ,
- set์ ๊ฐ๋ณ ๊ฐ์ฒด(mutable)
- frozenset์ ๋ถ๋ณ ๊ฐ์ฒด(immutable)
๋ค์์ฒ๋ผ ๋ง๋ค ์ ์๋ค.
frozen_topics = frozenset(["python", "sql", "python", "docker"])
print(frozen_topics)
์คํ ๊ฒฐ๊ณผ
frozenset({'python', 'sql', 'docker'})
ํ์ง๋ง ์งํฉ ์ฐ์ฐ ์์ฒด๋ ๊ฐ๋ฅํ๋ค.
group_x = frozenset(["A", "B", "C"])
group_y = frozenset(["C", "D", "E"])
print(group_x & group_y)
print(group_x | group_y)
์คํ ๊ฒฐ๊ณผ
frozenset({'C'})
frozenset({'A', 'B', 'C', 'D', 'E'})
frozenset์ ์ ์ฌ์ฉํ ๊น
frozenset์ ๋ถ๋ณ์ด์ด์ผ ํ๋ ์กฐํฉ์ ํํํ ๋ ๊ฝค ์ค์ํ๋ค.
1) ์งํฉ์ ๋ค๋ฅธ ์งํฉ์ ์์๋ก ๋ฃ๊ณ ์ถ์ ๋
์ผ๋ฐ set์ mutable์ด๋ผ ๋ค๋ฅธ ์งํฉ์ ์์๊ฐ ๋ ์ ์๋ค.
ํ์ง๋ง frozenset์ ๊ฐ๋ฅํ๋ค.
project_groups = {
frozenset({"backend", "database"}),
frozenset({"frontend", "design"})
}
print(project_groups)
์คํ ๊ฒฐ๊ณผ
{frozenset({'backend', 'database'}), frozenset({'frontend', 'design'})}
2) ๋์ ๋๋ฆฌ์ key๋ก ์ฌ์ฉํ๊ณ ์ถ์ ๋
access_levels = {
frozenset({"read"}): "viewer",
frozenset({"read", "write"}): "editor",
frozenset({"read", "write", "delete"}): "admin"
}
print(access_levels[frozenset({"read", "write"})])
์คํ ๊ฒฐ๊ณผ
editor
์ค๋ฌด ๊ฐ๊ฐ์ผ๋ก ์ดํดํ๋ set ๊ณผ frozenset
์๋ฅผ ๋ค์ด ์ฌ์ฉ์ ๊ด์ฌ ๊ธฐ์ ํ๊ทธ๋ฅผ ์ ๋ฆฌํ๋ค๊ณ ํด๋ณด์.
interest_tags = ["python", "sql", "python", "streamlit", "docker", "sql"]
unique_tags = set(interest_tags)
print(sorted(unique_tags))
์ด ๊ฒฝ์ฐ์๋ ์ค๋ณต ์ ๊ฑฐ๊ฐ ํต์ฌ์ด๋ฏ๋ก set์ด ์ ์ด์ธ๋ฆฐ๋ค.
๋ฐ๋ฉด ๊ถํ ์กฐํฉ์ฒ๋ผ "์ ํด์ง ๊ท์น"์ ํค๋ก ๋ค๋ฃจ๊ณ ์ถ๋ค๋ฉด frozenset์ด ๋ ์ ํฉํ๋ค.
permission_policy = {
frozenset({"view"}): "์ฝ๊ธฐ ์ ์ฉ",
frozenset({"view", "edit"}): "ํธ์ง ๊ฐ๋ฅ",
frozenset({"view", "edit", "delete"}): "๊ด๋ฆฌ ๊ถํ"
}
user_permission = frozenset({"view", "edit"})
print(permission_policy[user_permission])
์คํ ๊ฒฐ๊ณผ
ํธ์ง ๊ฐ๋ฅ
์ด๋ ๊ฒ ๋ณด๋ฉด set ๊ณผ frozenset ์ ๋จ์ํ ๋ฌธ๋ฒ ์ฐจ์ด๊ฐ ์๋๋ผ, ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ๊น์ง ๊ณ ๋ คํ ์ค๊ณ ๋๊ตฌ๋ผ๋ ์ ์ด ๋ ๋ถ๋ช ํด์ง๋ค.
๋ถ๋ถ์งํฉ๊ณผ ์์์งํฉ
์งํฉ์์๋ ํฉ์น๊ณ ๋นผ๋ ์ฐ์ฐ๋ง ์ค์ํ ๊ฒ์ด ์๋๋ค.
ํฌํจ ๊ด๊ณ๋ฅผ ํ์ธํ๋ ๊ฒ๋ ์์ฃผ ์ฐ์ธ๋ค.
basic_stack = {"Python", "SQL"}
data_stack = {"Python", "SQL", "Airflow", "Docker"}
print(basic_stack.issubset(data_stack))
print(data_stack.issuperset(basic_stack))
์คํ ๊ฒฐ๊ณผ
True
True
์ฐ์ฐ์๋ก๋ ํํํ ์ ์๋ค.
print(basic_stack <= data_stack)
print(data_stack >= basic_stack)
์๋ฅผ ๋ค์ด ํน์ ์ง์์๊ฐ ํ์ ๊ธฐ์ ์ ์ ๋ชจ๋ ๊ฐ์ง๊ณ ์๋์ง, ์ด๋ค ๊ถํ์ด ๋ค๋ฅธ ๊ถํ์ ์์ ๊ฐ๋ ์ธ์ง ๋น๊ตํ ๋ ์ด๋ฐ ๋ฐฉ์์ด ์ ์ฉํ๋ค.
set comprehension
๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ ๋ฐฐ์ ๋ค๋ฉด, set comprehension๋ ํจ๊ป ์ตํ๋๋ฉด ์ข๋ค.
์ค๋ณต ์ ๊ฑฐ์ ๊ณ์ฐ์ ๋์์ ํ ์ ์์ด์ ๋งค์ฐ ๊ฐ๊ฒฐํ๋ค.
scores = [70, 80, 80, 90, 100, 100]
adjusted_scores = {score + 5 for score in scores}
print(adjusted_scores)
print(sorted(adjusted_scores))
์คํ ๊ฒฐ๊ณผ
{75, 85, 95, 105}
[75, 85, 95, 105]
๋ฐ์ดํฐ ์ ๊ทํ, ๋ฌธ์์ด ์ ์ฒ๋ฆฌ, ํน์ ๊ฐ ๋ณํ ํ ์ค๋ณต ์ ๊ฑฐ ๊ฐ์ ์์ ์๋ ์์ฉํ ์ ์๋ค.
์ค์ํ๊ธฐ ์ฌ์ด ํฌ์ธํธ
์ฒซ์งธ, ๋น ์งํฉ์ {} ๊ฐ ์๋๋ผ set() ์ด๋ค.
empty_dict = {}
empty_set = set()
print(type(empty_dict))
print(type(empty_set))
์คํ ๊ฒฐ๊ณผ
<class 'dict'>
<class 'set'>
์ฆ, {}๋ ๋น ์งํฉ์ด ์๋๋ผ '๋น ๋์ ๋๋ฆฌ'๋ค.
๋์งธ, ์ถ๋ ฅ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋จํ๋ฉด ์ ๋๋ค
์งํฉ์ ์์๊ฐ ์๋ ์๋ฃํ์ด๋ฏ๋ก, ์ถ๋ ฅ ๊ฒฐ๊ณผ์ ๋ชจ์์ด ์กฐ๊ธ ๋ฌ๋ผ๋ ์ด์ํ ๊ฒ์ด ์๋๋ค.
์ ์งธ, ์ฐ์ฐ์ ๋ฐฉ์๊ณผ ๋ฉ์๋ ๋ฐฉ์์ ์ ๋ ฅ ์กฐ๊ฑด์ด ๋ค๋ฅด๋ค.
intersection()์ ๋ฆฌ์คํธ ๊ฐ์ iterable๋ ๋ฐ์ ์ ์์ง๋ง, & ๋ set ๋ผ๋ฆฌ๋ง ๊ฐ๋ฅํ๋ค.
๋ท์งธ, ์์๋ ํด์ ๊ฐ๋ฅํ ๊ฐ์ด์ด์ผ ํ๋ค.
๋ฆฌ์คํธ, ๋์ ๋๋ฆฌ, ์ผ๋ฐ set ์ ์งํฉ์ ์์๊ฐ ๋ ์ ์๋ค.
๋ค์ฏ์งธ, frozenset์ ์์ ํ ์ ์๋ค.
ํ์ง๋ง ๋ฐ๋ก ๊ทธ ๋ถ๋ณ์ฑ ๋๋ถ์ ๋ค๋ฅธ ์งํฉ์ ์์๋ ๋์ ๋๋ฆฌ key๋ก ์ฌ์ฉํ ์ ์๋ค.
๋ง๋ฌด๋ฆฌ
์ด๋ฒ ๊ธ์์๋ set์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ์์ ์์ํด์ ์งํฉ ์ฐ์ฐ, ๋ฉ์๋์ ์ฐ์ฐ์์ ์ฐจ์ด, hashable ๊ฐ๋ , frozenset์ ํ์ฉ๊น์ง ์ดํด๋ณด์๋ค.
์ด ํ๋ฆ์ ์ ์ดํดํด๋๋ฉด ๋ค์์ ๋ค๋ฃฐ mutable/immutable, ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ, ๊ฐ์ฒด ์ค๊ณ ๊ฐ์ ์ฃผ์ ๋ ํจ์ฌ ์์ฐ์ค๋ฝ๊ฒ ์ฐ๊ฒฐํด์ ์ดํดํ ์ ์๋ค.
'Python & SQL > Python Basics' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 9. [ํ์ด์ฌ] iterator์ generator (0) | 2026.03.07 |
|---|---|
| 7. [ํ์ด์ฌ] ํจ์ ๊ธฐ์ด์ ๋งค๊ฐ๋ณ์ (0) | 2026.03.07 |
| 5. [ํ์ด์ฌ] ๋์ ๋๋ฆฌ (0) | 2026.03.06 |
| 4. [ํ์ด์ฌ] ํํ๊ณผ ํจํน/์ธํจํน (0) | 2026.03.06 |
| 3. [ํ์ด์ฌ] Python ์๋ฃํ (0) | 2026.03.06 |