欢迎您进入老吴的博客,如有联系请加QQ群:1055524279
5.1 python字典的概述
作用:存多个值,key-value存取,取值速度快
定义:key必须是不可变类型,value可以是任意类型
字典是一个无序的,可以修改的,元素呈键值对的形式,以逗号分割的,以大括号包围的序列;
字典是python基础数据类型当中唯一一个映射关系的数据类型;
说明:
字典和列表一样,也能够存储多个数据,字典中的值并没有特殊顺序。
列表中找某个元素时,是根据下标进行的,如果下标很多,查找数据不方便。
当索引不好用时,使用字典,字典中找某个元素时字典的每个元素由2部分组成,键:值。例如 'name':'班长' ,'name'为键,'班长'为值,字典由键值组成。
程序当中的字典:
生活中的字典特点:前几页相当于目录结构,通过偏旁部首可以查找内容。
5.2 字典的增删改查操作
参考代码:
# 字典的增加
infor = {"name":"zhangsan"}
print(infor) # 打印
infor["age"] = 16 #添加age
infor["qq"] = 100886 # 添加qq
print(infor) # 打印
# 字典的修改
infor["qq"] = 10010 # 修改就是 :如果值存在就修改,不存在则是添加
print(infor)
# 字典的删除
del infor["qq"]
print(infor)
# 字典的查询
print(infor.get("name"))
print(infor.get("qq"))
字典增删改查语法:
5.3 python字典的特点
因为字典是无序的,所以字典没有索引值;
因为字典没有索引值,所以字典以键取值,(字典的键相当于列表的索引);
因为字典以键取值,所以字典的键唯一且不可修改;
因为字典的键不可修改,所以列表和字典等可变类型的数据不可以给字典做键。
5.4 python字典的常见操作
字典的取值 |
keys |
返回一个包含字典所有key的列表 |
values |
返回一个包含字典所有vaule的列表 |
|
get |
以键取值,如果指定键不存在,默认返回None,可以指定返回内容 |
|
update |
以字典格式更新指定键的内容,如果键不存在,创建键和值 |
|
items |
返回字典键值呈元组形式的格式 |
|
|
len |
测量字典,键值对的个数(整体) |
参考代码:
# 字典的查
# 直接dic[key](没有此键会报错)
dic = {'name': '老吴', 'age': 17}
print(dic['name']) # 老吴
print(len(dic)) #len()测量字典,键值对的个数(整体)
# get 以键取值,如果指定键不存在,默认返回None,可以指定返回内容
dic = {'name': '老吴', 'age': 17}
v = dic.get('name')
print(v) # '老吴'
v = dic.get('name1')
print(v) # None
v = dic.get('name2','没有此键')
print(v) # 没有此键
# keys() 返回一个包含字典所有key的列表
dic = {'name': '老吴', 'age': 17}
print(dic.keys()) # dict_keys(['name', 'age'])
# values() 返回一个包含字典所有vaule的列表
dic = {'name': '老吴', 'age': 17}
print(dic.values()) # dict_values(['老吴', 17])
# items() 返回字典键值呈元组形式的格式
dic = {'name': '老吴', 'age': 17}
print(dic.items()) # dict_items([('name', '老吴'), ('age', 17)])
# update 表示更新
#字典(Dictionary) update() 函数把字典dict2的键/值对更新到dict里。
dict = {'name': 'test', 'age': 17}
dict2 = {'sex': 'man' }
dict.update(dict2)
print("更新后字典是%s" %dict)
字典的删除 |
pop |
弹出,返回并删除指定键对应的值 |
popitem |
随机弹出一个键值元组,这里随机的原因是因为字典无序 |
|
clear |
清空字典 |
|
字典的判断 |
in |
判断指定的键是否在字典当中,即将被废除,之后我们python3用in |
字典的遍历 |
通过for ...in ... |
通过for ... in ...:的语法结构,我们可以遍历字符串、列表、元组、字典等数据结构。
|
参考代码:
infor = {"name":"zhangsan","age":17}
# 遍历字典
for i in infor:
print(i)
print(infor.pop("age")) #弹出,返回并删除指定键对应的值
print(infor.popitem()) #随机弹出一个键值元组,这里随机的原因是因为字典无序
print(infor.clear()) # 清空字典
判断值存在应该判断key值
5.5 Python集合
5.5.1 集合的定义
集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:
去重,把一个列表变成集合,就自动去重了。
关系测试,测试两组数据之前的交集、差集、并集等关系。
作用:关系运算,去重
参考代码:
#coding:utf-8
#作用:关系运算,去重
s = {1,2,3,3,2,1}
print(s)
print(type(s)) # 打印集合类型
集合没有顺序
交集:公共部分
并集:| 没有重复的
对称差集^:只在x或y中,但是不会同时出现在二者中
差集(a-b)是:项在a中,但不在b中。
创建集合
5.1.2 集合的增加和删除
#集合的增加
set1 = {'test','wusir','laowu'}
set1.add('Python')
print(set1)
#集合的删除
set1.remove('test') # 删除一个元素
print(set1)
set1.pop() # 随机删除一个元素
print(set1)
set1.clear() # 清空集合
print(set1)
5.1.3 集合的其他操作
参考代码:
#coding:utf-8
#作用:关系运算,去重
python = {"test","gavin","woniu"}
linux = {"boy","girl","test"}
# &交集:同时报名两门课程的学生
print(python&linux)
# |并集: 所有的学生
print(python|linux)
#^ 对称差集:没有同时报名两门课程
print(python^linux)
# - 差集:只报名python课程的学生,去掉共同的部分
print(python-linux)