[파이썬 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 :
//들여쓰기로 코드 작성, 들여쓰기를 떠날 때 자동으로 파일 닫기
파일 모드 열기
- w b,쓰기
a = open("xxx.txt",mode = "wb")
a.write("xqs".enicode("utf-8"))
a.close()
- w,쓰기
a = open("1.txt",mode = "w",encoding = "utf-8")
a.write("xqs")
- ab,추가
a = open("xxx.txt",mode = "ab")
a.write("xqs".enicode("utf-8"))
a.close()
- a,체이스
a = open("xxx.txt",mode = "a",encoding = "utf-8")
a.write("xqs")
a.close()
- 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()
- r,읽다.
a = open("xxx.txt",mode = "r",encodind = "utf-8")
b.read()//모두 읽기, 문자열로 직접 읽기
a.close()





