blog

7일 만에 파이썬--.

파일 작업\n딕셔너리\n딕셔너리는 반복되지 않는 키와 키-값 쌍만 가능한 요소가 있는 정렬되지 않은 변경 가능한 컨테이너입니다.\ninfo = {"k1":123,"k2":999 }...

Oct 4, 2025 · 7 min. read
シェア

[파이썬 7일 단기 속성 과정 - 4일차]

블로그에 포스팅하고 싶다면 공개 번호: chuanye를 팔로우하여 정보를 얻으세요!

파일 작업

사전

딕셔너리는 반복되지 않는 키와 키-값 쌍만 가능한 요소가 있는 정렬되지 않은 변경 가능한 컨테이너입니다.

info = {"k1":123,"k2":999 }

키-값 쌍

키는 복제할 수 없으며, 중복된 키는 덮어쓰기됩니다.

info = {"k1":123,"k1":999 }
print(k1)//999

키는 해시 가능해야 합니다.

//해시 가능: int,bool,str,tuple //해시 불가능: 목록,사전

v1 = 데이터 유형
a = hash(v1)
print(a)//해시 가능은 오류를 보고하지 않습니다.

컨테이너

기본 주문되지 않음

정의

info = {"k1":123,"k2":999 }
info = {
 "k1":123,
 "k2":999,
 "a1":True,
 "a2":["1","2"]
 }

고유 함수

값 가져오기

info = {
 "k1":123,
 "k2":999,
 "a1":True,
 "a2":["1","2"]
 }
a = info.get("k1")
print(a)//123

키가 존재하지 않으면 비어있는

a = info.get("k1","xxx")//키 "k1"이 존재하지 않으면 a는 xxx이고, 키가 존재하면 a는 값입니다.
info = {
 "k1":123,
 "k2":999,
 "a1":True,
 "a2":["1","2"]
 }
user = input("사용자 이름을 입력하세요")
pwd = input("비밀번호를 입력하세요:")
a = info.get(user)
if a == None:
 print("사용자가 존재하지 않습니다")

key

info = {
 "k1":123,
 "k2":999,
 "a1":True,
 "a2":["1","2"]
 }
a = info.keys()//하이패션 목록
res = list(a)//하이패션 목록이 파이썬 목록으로 변환됨
print(a)//dict_keys(['k1','k2','a1','a2'])
for i in info.keys():
 print(i)//주기적 출력

Value

info = {
 "k1":123,
 "k2":999,
 "a1":True,
 "a2":["1","2"]
 }
a = info.values()//하이패션 목록은 그 가치를 얻습니다.
print(a)//dict_values([123,999,True,["1","2" ]])
for i in info.valuess():
 print(i)//주기적 출력

키 값

항목모든 키 가져오기

info.items()
for i in info.items():
 print(i)//루프 출력("k1":123)
for i,j in info.items()://요소는 자동으로 압축이 풀리고 i와 j로 전달됩니다.
 print(i,j)//루프 출력("k1":123)
a,b = [11,22]//자동 포장 풀기,a11,b22
a,b = (11,22)//자동 포장 풀기,a11,b22

공용 함수

길이, 키-값 쌍의 수

info = {
 "k1":123,
 "k2":999,
 "a1":True,
 "a2":["1","2"]
 }
data = len(info)

색인 가져오기

인덱스는 키이고 값은 키에서 가져옵니다.

info = {
 "k1":123,
 "k2":999,
 "a1":True,
 "a2":["1","2"]
 }
// 
data = info["name"]
존재하지 않는 키 인덱스를 작성하면 오류가 보고됩니다.
info.get(키)//키가 존재하지 않으면 오류가 보고되지 않고 None을 반환합니다.
//값 추가 및 수정
info["k1"] = 100//키가 존재하지 않으면
// 
del info[ ]
//삭제하기 전에 키가 존재하는지 확인합니다.
if 정보를 입력합니다:
 pass

for

 키 // 모든 키 가져오기
 info = {
 "k1":123,
 "k2":999,
 "a1":True,
 "a2":["1","2"]
 }
 a = info.keys()//하이패션 목록
 res = list(a)//하이패션 목록이 파이썬 목록으로 변환됨
 print(a)//dict_keys(['k1','k2','a1','a2'])
 for i in info.keys():
 print(i)//주기적 출력
  
 info = {
 "k1":123,
 "k2":999,
 "a1":True,
 "a2":["1","2"]
 }
 a = info.values()//하이패션 목록은 그 가치를 얻습니다.
 print(a)//dict_values([123,999,True,["1","2" ]])
 for i in info.valuess():
 print(i)//주기적 출력
  
 items모든 키 가져오기
 info.items()
 for i in info.items():
 print(i)//루프 출력("k1":123)
 for i,j in info.items()://요소는 자동으로 압축이 풀리고 i와 j로 전달됩니다.
 print(i,j)//루프 출력("k1":123)
 a,b = [11,22]//자동 포장 풀기,a11,b22
 a,b = (11,22)//자동 포장 풀기,a11,b22

연습 문제

 while True:
 text = input("입력하세요:")
 if text.upper() == Q:
 break
 text_list = text.split(",")
 info(text_list[0]) = text_list[1]
 for a,b in info.items():
 print(a,b)
 goods = [
 	{"1":111,"a":aaa},
 	{"2':222,"a":bbb},
 	{"3":333,"a":ccc},
 	{"4':444,"a":ddd}
				]
		for m in len(goods):
 		msg = "{}{}{}".format(m+1,goods[m]['1'],goods[m]['a'])
  
	info = {
 "k1":123,
 "k2":999,
 "a1":True,
 "a2":["1","2"]
 }
 info["k1"]//123
 info["a2"][-1]//"2"
 info["a2"].append(999)//"a2":["1","2",999],
 if "k1" in info:
 pass
 if "k3" in info:
 pass
 else:
 info["k3"] = 123//키 "k3"의 값을 123으로 설정합니다.
사전은 가변 유형입니다.

1.4 보충 내부 중첩, 사전은 목록을 중첩할 수 있고 컨테이너이기 때문에 서로 중첩할 수 있습니다: 튜플, 목록, 사전 1.5 해시 가능 비해시 가능: 사전과 목록

요약 1. 문자열 str 고유 함수: 대문자/소문자/공백 제거/분리/교체/조인/숫자/좌/우 패딩 여부 공용 함수: 길이/색인/슬라이스/포 루프/포 함 포함 여부

2. 목록 목록 고유 함수: 추가/삽입/삭제/제거/지우기/소트 공용 함수: 길이/색인/슬라이스/포/인 포함 여부

3. 튜플 고유 함수: 없음 공용 함수: 길이/색인/슬라이스/포루프/인 포함 여부

4. 딕셔너리 고유 함수: get/키/값/항목 공용 함수: len/index/for loop/in 여부 포함 여부

2, 컬렉션 컬렉션은 정렬되지 않고 변경 가능한 컨테이너로, 요소가 해시 가능하고 반복되지 않아야 합니다.

2.1 정의 v1 = {11,22,33,44} 정렬되지 않음 - 인덱스 슬라이싱 작업 없음 변수: v1.add(11) 반복되지 않음: 동일한 값의 동일한 요소 추가 요소는 해시 가능해야 함: 목록, 사전, 컬렉션으로 해시 가능하지 않음

복제하지 않으려는 데이터 모음을 컬렉션으로 사용할 수 있습니다.

널 값을 정의합니다:

빈 목록

v1 = []
v2 = list()

빈 튜플

v1 = ()
v2 = tuple()

빈 사전

v1 = {}
v2 = dict{}

빈 집합(수학)

v1 = set()

고유 기능 1.

v1 = {11,22}
v1.add{33}
v1.add{"xqs"}
print(v1)

2. 요소 삭제

v1.discard(11)
삭제 요소가 존재하지 않으면 작업 없음

3. 교차로

v1 = {11,111,23,44}
v2 = {11,09,878,55,44}
res = v1.intersection(v2)//는 새 집합 // 또는 res를 생성합니다.= v1 & v2
res//{11,44}

4. 연결

res = v1.union(v2)// v1 | v2

5. 차이 세트

res = v1.difference(v2)//v1v2 없이 //res= v1 - v2

공개 1. 길이

v1 = {11,22,33}
data = len(v1)//3

2.for

v1 = {11,22,33}
for i in v1:
 print(i)//순서는 고정되어 있지 않습니다.

3.in

v1 = {11,22,33}
if 11 in v1:
 print(" 

컨테이너 간 변환:

목록 튜플 세트# 변환 원칙은 영어 이름으로 감싸는 것입니다. 목록 = [] a = 튜플(목록)//목록을 튜플로

컬렉션으로 변환하면 튜플 또는 목록의 가중치가 자동으로 해제됩니다.

없음 유형은 null 값을 나타냅니다.

v1 = None//메모리 저장

부울 유형 참/거짓 다음 거짓은 0, "",[],, 없음 ---> 거짓, 나머지는 모두 참입니다.

부동 소수점 십진수, 때때로 부정확한 v1 = 2.9

정밀도를 위해 십진수 모듈 사용

import decimal
v1 = decimal.Decimal("0.1")
v2 = decimal.Decimal("0.1")
v3 = v1 + v2

바이트 유형

name = "xqs"//str는 기본 유니코드 인코딩이 있는 문자열입니다.
data = name.encode("utf-8")//문자열을 바이트 단위로 변환
print(data)//b'\xxx\xxx\xxx \xxx\xxx\xxx \xxx\xxx\xxx'//중국어 문자 하나에 3바이트
data = name.encode("gbk")b'\xxx\xxx\xxx\xxx\xxx\xxx'2바이트

//바이트를 문자열로 변환

name = "str" #PEP8 표준

파일 작업!!!

일반 텍스트 파일만 기본 3단계! 1. 열기 2. 작동 3. 닫기

1. 빠른 읽기 및 쓰기

1.파일 열기
open("파일 경로", 모드)
a = open("1.txt",mode = "wb")//파일 쓰기 모드에서 변수는 열려 있는 파일을 가리킵니다.
2. 
name = "str
"//unicode, 
다음 자동 줄 바꿈
a.write(name.enicode("utf-8"))//utf-8로 쓰기
3.파일 닫기
a.close()

wb 모드: 파일이 없으면 생성하고, 있으면 비웁니다.

반복 입력

a = open("1.txt",mode = "wb")
while True 
 if a:
 break
 name = "str
"//unicode, 
다음 자동 줄 바꿈
 a.write(name.enicode("utf-8"))//utf-8로 쓰기
a.close()

2. 파일 추가 모드 = 'ab'//파일 끝에 쓰기 3. 콘텐츠 읽기 모드 = 'rb'

 #파일 내용 읽기
 data = a.read()//바이트 형식
 data.decode('utf-8')
 b = data_string.split("
") 
를 사용하여 문자열을 자릅니다.
 b = data_string.strip().split("
") 
를 사용하여 문자열을 자릅니다.
 대용량 파일을 한 줄씩 읽기
 a.readline()
 for line in a:
 line_string = line.decode('utf-8')
 line_string = line_string.strip()
 with컨텍스트 // 파일 닫는 것을 잊어버림
//파일을 열고 이 파일을 변수 파일과 동일하게 만듭니다._object
with open("xxx.txt",mode = 'rb') as file_object :
 //들여쓰기로 코드 작성, 들여쓰기를 떠날 때 자동으로 파일 닫기

파일 모드 열기

  1. w b,쓰기
 a = open("xxx.txt",mode = "wb")
 a.write("xqs".enicode("utf-8"))
 a.close()
  1. w,쓰기
 a = open("1.txt",mode = "w",encoding = "utf-8")
 a.write("xqs")
  1. ab,추가
 a = open("xxx.txt",mode = "ab")
 a.write("xqs".enicode("utf-8"))
 a.close()
  1. a,체이스
 a = open("xxx.txt",mode = "a",encoding = "utf-8")
 a.write("xqs")
 a.close()
  1. r b,
 a = open("xxx.txt",mode = "rb")
 
 //압축된 utf-8 인코딩을 읽습니다.
 b.read()// 
 for line in a:// 
 pass
 data = b.decode('utf-8')// ,utf-8-->unicode
 a.close()
  1. r,읽다.
 a = open("xxx.txt",mode = "r",encodind = "utf-8")
 
 b.read()//모두 읽기, 문자열로 직접 읽기
 
 a.close()
Read next

빅 모델 풀 스택 개발 실습 - 부커 빅 모델 - 3. 개인 데이터 베이스 구축

미세 조정을 할 수 없는 것도 아니며, 작은 데이터베이스를 사용하는 것이 더 비용 효율적입니다! 큰 모델은 많은 전문 지식 기반에 대해 풍부한 일반 지식을 가지고 있으며, 이번에는 미세 조정이나 랭 체인을 사용하여이 격차를 메울 수 없습니다!

Oct 4, 2025 · 2 min read