Python基础篇-day3

时间:2024-01-14 18:43:02

主要内容:
字典 集合 文件处理 字符编码

1、字典
dict简介
dict就是key value值,索引有意义,数据无序

key定义规则:
a:不可变--数字、字符串、元组(可变--列表、字典)
b:不能重复

定义
D = {
'name':'zs',
'age':'12',
'sid':'01'
}
#增
D['wid']='001'
D.setdefault('gender','MEN')
D.setdefault('gender',[]).append('MEN')
D.setdefault('gender',[]) and D['gender'].append('MEN')

#删
del D['wid']
D.pop('name') #索引不存在,报错"KeyError",并且终止程序
D.popitem() #没有参数,随机删除数据(key,value)

#改
D['age']=21
D.update

#查
print(D['age'])
print(D['agedsd']) #查找索引不存在,报错"KeyError",并且终止程序
print(D.get('name'))
print(D.get('hjahs')) #查找索引不存在打印"None",不会中断程序

清空字典:
dic.clear()
拷贝字典:
dic1=dic.copy()

快速生成字典
dic2=dict.fromkeys('abc',1) #快速生成的办法,对应所有的value值对应内存中同一个地址,更改一个会将所有的值全部修改

#item()方法,
#数据量大时不要使用,会将所有的数据全部转化为列表,然后在列表中查找数据
for k,v in dic.item():
print(k,v)

#打印keys
#数据量大时,使用key的方法
print (dict1.keys())
for i in (dict1.keys()):
print(i,dict1[i])

#打印values
print (dict1.values())

#浅copy
D1 = D.copy()
D1["sid"][2] = 4
print(D)
print(D1)
print (id(D["sid"]),id(D1["sid"]))
输出:
F:\Python\Python3\python.exe D:/python培训/our_python/day3/练习.py
{'age': '12', 'name': 'zs', 'sid': [1, 2, 4]}
{'age': '12', 'name': 'zs', 'sid': [1, 2, 4]}
5273280 5273280

#深copy
strip()去空格、换行符
import copy
D = {
'name':'zs',
'age':'12',
'sid':[1,2,3]
}
D2 = copy.deepcopy(D)
D1 = D.copy()
D1["sid"][2] = 4

print(D) #原字典
print(D1) #浅拷贝,只拷贝外层
print(D2) #深拷贝,完全拷贝一份
print (id(D["sid"]),id(D1["sid"]))
print (id(D["sid"]),id(D2["sid"]))
输出:
F:\Python\Python3\python.exe D:/python培训/our_python/day3/练习.py
{'sid': [1, 2, 4], 'name': 'zs', 'age': '12'}
{'sid': [1, 2, 4], 'name': 'zs', 'age': '12'}
{'sid': [1, 2, 3], 'name': 'zs', 'age': '12'}
7235584 7235584
7235584 7234464

2、集合
s1 = {1,2,3,4,5}
s2 = {2,3}

基本方法:全部不修改s1和s2
#交集
print(s1&s2)
print(s1.intersection(s2))

#并集
print(s1|s2)
print(s1.union(s2))

#差集
print(s1-s2)
print(s1.difference(s2))
print(s2-s1)
print(s2.difference(s1))

#对称差集 s1|s1 - s1&s2
print(s1^s2)
print(s1.symmetric_difference(s2))

#子集
print(s1<=s2)
print(s1.issubset(s2))
print(s2<=s1)
print(s2.issubset(s1))

#父集
print(s1>=s2)
print(s1.issuperset(s2))
print(s2>=s1)
print(s2.issuperset(s1))

其他内置函数:
s1 = {1,2,3,a,c}
s1.update(s2) #更新
add('hello') #增加
s1.pop() #随机删除
s1.remove('a') #指定删除;删除元素没有报错KeyError,终止程序
s1.remove() #没有参数,报错TypeError
s1.discard('a') #指定删除;删除元素没有,返回None
s1.difference_update(s2) #s1=s1-s2 最终会修改s1的值

3、字符编码
A:内存固定使用unicode编码,无法改变
B:存入和读取使用编码必须一致
C:运次程序过程:从硬盘读取到内存,python解释器运行
D:.py文件中指定的编码是指定从硬盘中读取数据时使用的编码格式
写入硬盘encode指定编码
读入内存decode指定编码
#coding:gbk
#_*_coding:gbk_*_

4、文件处理
a = {'name':'asd'}

eval(a) 字符串转换成字典

例如下图:

Python基础篇-day3