python 学习笔记5:字典,集合,文件

python 学习笔记5

字典

1、创建

dict1 = {1:'one',2:'two',3:'three'}
dict2 = dict(((1,'one'),(2,'two'),(3,'three')))
dict3 = dict(x = 'x',y = 'y') #使用关键字参数创建字典

2、调用、修改和添加

 dict1[1] 
 dict1[1] = 'one1'
 dict[4] = 'four'

在序列中为一个不存在的索引赋值或修改时会报错,但是字典会创建一个新的键

3、方法

①fromkeys
dict.fromkeys(S[,v]):S为键值,v为对应的值,不会改变原字典

dict1 = {}
dict1.fromkeys((1,2,3)) #{1: None, 2: None, 3: None} 不改变dict1
dict1.fromkeys((1,2,3),'Number') #{1: 'Number', 2: 'Number', 3: 'Number'}
dict1.fromkeys((1,2,3),('one','two','three')) #{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}

②访问方法:keys(),values(),itms()
均返回一个迭代器,分别取键值,值和键值与值组成的元组

dict1 = {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e'}
dict1.keys() #dict_keys([0, 1, 2, 3, 4])
dict1.values() #dict_values(['a', 'b', 'c', 'd', 'e'])
dict1.items() #dict_items([(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e')])

③get(),setdefault()
get():一个更宽松的访问方法,不会报错
setdefault():与get()类似,但是找不到键时会创建新的键

dict1 = {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e'}
dict1.get(0) #'a'
dict1.get(5) #None
dict1.get(0,'没有') #'a'
dict1.get(5,'没有') #'没有'
dict1.setdefault(0) #'a'
dict1.setdefault(5) #None dict1 = {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: None}
dict1.setdefault(0,'f') #'a' dict1不变
dict1.setdefault(5,'f') #'f' dict1 = {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f'}

④clear():清空字典

dict1.clear() #dict1 = {} #清空内存,推荐做法
dict1 = {} #不严谨,只是将dict1重新指向一个空字典,没有清内存,有安全隐患

⑤pop(),popitem()
pop(S) 返回对应的值并将其从字典中剔除
popitem():返回最后一项并将其从字典中剔除

dict1.pop(1) #b dict1 = {0: 'a', 2: 'c', 3: 'd', 4: 'e'}
dict1.popitem() #(4, 'e') dict1 = {0: 'a', 1: 'b', 2: 'c', 3: 'd'}

⑥update()
dict1.update(dict2) 使用dict2去更新dict1,dict2中有但dict1中没有的键将在dict1中创建新的键,dict1和dict2中都有的键使用dict2中相应的值代替dict1中相应的值,dict1中有但dict2中没有的键不变。

dict1 = {1:'one',2:'two'}
dict2 = {1:'one',3:'three'}
dict1.update(dict2) #dict1 = {1: 'one', 2: 'two', 3: 'three'}

4、操作符

成员资格操作符,查看的是键而不是值

0 in dict1 #True
5 in dict1 #Flase

集合

1、创建

花括号并且不体现集合,每个元素是唯一的,元素无序的,不能用索引

set1 = {} #type(set1) = 'dict'
set1 = {1,2,3} # type(set1) = 'set'
set1 = {1,1,1,1} # set1 = {1}
set1 = set([1,2,3,3]) #set1 = {1,2,3}
list1 = list(set([3,4,5,1,3,4,6])) #list1 = [1, 3, 4, 5, 6] 去除了重复元素,会改变索引,慎用

2、访问

for:一个一个访问集合中的数据

for item in set1:
	...

in,not in :判断一个元素是否在集合中

1 in set1 #True

3、方法

①add():添加元素

set1.add(6)

②remove():移除元素

set1.remove(5)

8、不可变集合

将集合冻结(froze),不可被删除元素或添加元素。

set2 = frozenset(set1) #返回一个与set1相同的不可变集合存在set2中,不改变set1,set1依旧可变

文件

1、打开文件

open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

mode:打开模式
打开模式执行操作
‘r’以只读方式打开文件(默认)
‘w’以写入方式打开文件,会覆盖原有的文件,不存在时会创建一个新文件
‘x’如果文件已存在,会引发异常
‘a’以写入模式打开, 如果文件存在,在则在末尾追加写入
‘b’以二进制模式打开文件
‘t’以文本模式打开
‘+’可读写模式
‘U’通用换行符支持
file1 = open('D:\\python3\\t.txt','r') #将t.txt文件以只读模式打开存在file1中

文件对象方法

文件对象方法执行操作
f.close()关闭文件
f.read(size = -1)从文件中读取size个字符,当未给定size或给定负值时,读取剩余所有的字符,并作为字符串返回
f.readline()以写入模式打开,如果文件存在,则在末尾追加写入
f.write(str)将字符串str写入文件
f.writelines(seq)向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象
f.seek(offset,from)在文件中移动文件指针,从from(0代表文件起始位置,1代表文件当前位置,2代表文件末尾)偏移offset个字节
f.tell()返回当前在文件中的位置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值