Python基础进阶:深入字典操作与文件处理技巧

目录

1、字典

1.1、字典是什么

 1.2、创建字典

1.3、查找 key

1.4、新增/修改元素

1.5、删除元素

1.6、遍历字典元素

1.7、取出所有 key 和 value

1.8、合法的 key 类型

1.9、小结

2、文件

2.1、文件是什么

2.2、文件路径

2.3、文件操作

2.3.1、打开文件

2.3.2、关闭文件

2.3.3、写文件

2.3.4、读文件

 2.4、关于中文的处理

2.5、使用上下文管理器

1、字典
1.1、字典是什么
字典是一种存储 键值对 的结构.

啥是键值对? 这是计算机/生活中一个非常广泛使用的概念.

把 键(key) 和 值(value) 进行一个一对一的映射, 然后就可以根据键, 快速找到值.

举个栗子, 学校的每个同学, 都会有一个唯一的学号.
知道了学号, 就能确定这个同学.
此处 "学号" 就是 "键", 这个 "同学" 就是 "值".
 
1.2、创建字典
创建一个空的字典. 1、使用 { } 表示字典.  2、使用dict()函数创建字典,适用动态创建情况。

a = {} # 创建一个空字典
b = dict() # 使用函数创建字典
print(type(a))
print(type(b))


也可以在创建的同时指定初始值
键值对之间使用 , 分割, 键和值之间使用 : 分割. (冒号后面推荐加一个空格).
使用 print 来打印字典内容 
student = {'id': 1,'name': 'zhangsan'} # 创建字典并初始化
print(student) # 打印字典数据


为了代码更规范美观, 在创建字典的时候往往会把多个键值对, 分成多行来书写. 
student = {
    'id': 1,
    'name': 'zhangsan'
} # 创建字典并分行初始化
print(student) # 打印字典数据
最后一个键值对, 后面可以写 , 也可以不写.
student = {
    'id': 1,
    'name': 'zhangsan', # 最后一个键值对加,
} # 创建字典并分行初始化
print(student) # 打印字典数据
1.3、查找 key
使用 in 可以判定 key 是否在 字典 中存在. 返回布尔值.

student = {
    'id': 1,
    'name': 'zhangsan',
}
print('id' in student)    # 判断key值id是否存在
print('score' in student) # 判断key值score是否存在


使用 [ ] 通过类似于取下标的方式, 获取到元素的值. 只不过此处的 "下标" 是 key. (可能是整数, 也可能是字符串等其他类型). 

student = {
    'id': 1,
    'name': 'zhangsan',
}
print(student['id'])   # key值id对应的值
print(student['name']) # key值name对应的值


如果 key 在字典中不存在, 则会抛出异常. 

student = {
    'id': 1,
    'name': 'zhangsan',
}
print(student['score'])   # key值score对应的值,不存在则抛异常


1.4、新增/修改元素
使用 [ ] 可以根据 key 来新增/修改 value.
如果 key 不存在, 对取下标操作赋值, 即为新增键值对 

student = {
    'id': 1,
    'name': 'zhangsan'
}
 
print(student)
student['score'] = 90 #key值score不存在则新增键值对
print(student)


如果 key 已经存在, 对取下标操作赋值, 即为修改键值对的值. 

student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}
 
print(student)
student['score'] = 90 # key值已经存在,即对键值对值进行修改
print(student)


1.5、删除元素
使用 pop 方法根据 key 删除对应的键值对. 

student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}
 
print(student)
student.pop('score') # 删除key值为score的键值对
print(student)


1.6、遍历字典元素
直接使用 for 循环能够获取到字典中的所有的 key, 进一步的就可以取出每个值了. 

student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}
 
for key in student:
    print(key,student[key])


1.7、取出所有 key 和 value
使用 keys 方法可以获取到字典中的所有的 key 

student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}
 
print(student.keys()) # 使用keys获取所有key值


此处 dict_keys 是一个特殊的类型, 专门用来表示字典的所有 key. 大部分元组支持的操作对于dict_keys 同样适用. 
使用 values 方法可以获取到字典中的所有 value

student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}
 
print(student.values()) # 使用values获取所有value值


此处 dict_values 也是一个特殊的类型, 和 dict_keys 类似.
 使用 items 方法可以获取到字典中所有的键值对. 

student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}
 
print(student.items()) # 使用items获取所有键值对


1.8、合法的 key 类型
不是所有的类型都可以作为字典的 key.
字典本质上是一个 哈希表, 哈希表的 key 要求是 "可哈希的", 也就是可以计算出一个哈希值.

 可以使用 hash 函数计算某个对象的哈希值.
但凡能够计算出哈希值的类型, 都可以作为字典的 key. 
print(hash(0)) # 计算hash值
print(hash(3.14))
print(hash('hello'))
print(hash(True))
print(hash(()))


列表无法计算哈希值. 

print(hash([1,2,3])) # 列表不能计算hash值


字典也无法计算哈希值 

print(hash({'id': 1})) # 字典不能计算hash值


1.9、小结
字典也是一个常用的结构. 字典的所有操作都是围绕 key 来展开的.
需要表示 "键值对映射" 这种场景时就可以考虑使用字典. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值