字典
字典是一种无序的,可变的序列,它的每组元素都有键值对组成,中间用冒号分隔,如果有多组元素的话,元素与元素用逗号隔开 。
字典的语法格式如下:
d = {key1:value1,key2:value2}
字典类型的数据实际使用场景很广,其中最典型的json数据,里面的内容就是由键值对组成 ;或者通过抓包的HTTP请求,你会发现请求报文数据也是有键值对组成 。
字典里的键必须是唯一的,可以是字符串、数字等不可变数据组成 ,值可以是任何数据类型。
创建字典
创建字典的两种方式:通过大括号创建,d = {}
通过dict()类创建, d = dict(),如果里面传值,键值对需要=连接。
# 创建字典
d1 = {} #空字典
d2 = {'zhangsan': 23, 'lisi': 35}
d3 = dict() #空字典
d4=dict(zhangsan=23,lisi=35)
print("字典d1 =",d1)
print("字典d2 =",d2)
print("字典d3 =",d3)
print("字典d4 =",d4)
运行结果:
字典d1 = {}
字典d2 = {'zhangsan': 23, 'lisi': 35}
字典d3 = {}
字典d4 = {'zhangsan': 23, 'lisi': 35}
访问字典
访问字典主要是通过键名获取其值,也可以通过get()方法来获取。通过键名获取的格式:dict_name[key],这种获取方式,如果key不存在,就会抛出异常
通过get方法获取的格式:dict_name.get(key),通过这种方式获取,如果key不存在,返回None。这也是以上两种方式获取的主要区别 。
d5 = {'zhangsan': 23, 'lisi': 35}
print("通过键名获取:",d5['zhangsan'])
#print("通过键名获取:",d5['wangwu']) #键不存在,运行后会报错
print("通过get方法获取:",d5.get('zhangsan'))
print("通过get方法获取:",d5.get('wangwu')) #键不存在,返回None
运行结果:
通过键名获取: 23
通过get方法获取: 23
通过get方法获取: None
修改字典
修改字典中的值,通过dict_name[‘key’] =new_value 。如果键名不存在,则是向字典中添加新的键值对 。
# 3. 修改字典
d6 = {'zhangsan': 23, 'lisi': 35}
d6['zhangsan'] = 19
print('修改键名后的字典:',d6)
d6['wangwu'] = '53'
print('添加键值对后的字典:',d6)
运行后结果:
修改键名后的字典: {'zhangsan': 19, 'lisi': 35}
添加键值对后的字典: {'zhangsan': 19, 'lisi': 35, 'wangwu': '53'}
删除字典
可以删除某个键值对 ;也可以清空整个字典中的数据 ;可以删除整个字典 .删除某键值对:del dict_name[key_name],也可以dict_name.pop(key_name)
清空字典中的数据:dict_name.clear()
删除整个字典: del dict_name
以上的删除操作和列表基本一致,这里就不在举例 。
字典方法
除了以上对字典的操作外,字典也有很多方法 。我们可以通过一张图来看下字典中的方法及使用。
Set集合
集合(set)是一个无序的不重复元素的序列,集合中的元素都是一个唯一的,各不相同。
从语法格式上来看,set的创建和字典一样,都是将元素放在一对大括号{}内,相邻元素之间用逗号(,)分隔 。主要注意的是:创建一个空集合必须使用set()而不是{},因为{}是用来创建一个空字典。
在set集合中,主要有如下几种用法:
创建集合
创建格式:
#第一种创建:使用{}
s = {'元素1','元素2','...','元素N'}
#第二种创建:set()
s1 = set(seq)
这里的seq是字符串、列表、元组、range对象等可迭代对象转化成的集合 。
示例:
tp = ('c++','java','python')
s1 = {'c++','java','python'}
s2 = set(tp)
print("1.通过{}来创建集合",s1)
print("2.将元组中的元素转化为集合",s2)
运行结果
1.通过{}来创建集合 {'c++', 'python', 'java'}
2.将元组中的元素转化为集合 {'c++', 'python', 'java'}
访问集合
由于集合是无序的,所以不能通过下标来获取集合中的元素。所以, 只能通过循环将集合中的元素一一的循环出来。
s3 = {'c++','java','python'}
for s in s3:
print("元素:",s)
运行结果:
元素: java
元素: c++
元素: python备注:由于集合是无序的,所以每次打印出的元素顺序都是不一样的。
更新集合
也可以为集合添加元素,或者更新集合的某个元素。添加元素:s.add('元素')
更新元素:s.update(seq) ,注意
s4 = {'c++','java','python'}
s4.add('go')
print("添加元素后的集合:",s4)
s4.update(['perl','php'])
print('更新后的集合:',s4)
运行结果:
添加元素后的集合: {'java', 'python', 'c++', 'go'}
更新后的集合: {'php', 'c++', 'java', 'go', 'python', 'perl'}
删除集合
集合也可以进行删除元素,也可以将结合删除 。删除集合中的元素:s.remove('元素')
随机删除一个元素:s.pop()
清空集合:s.clear()
删除整个集合:del s
s5 = {'c++','java','python'}
s5.remove('java')
print("删除元素后的集合:",s5)
del s5
#输出结果:删除元素后的集合: {'python', 'c++'}
删除结果后,将无法打印。
其它操作
集合运算
下面对两个集合的运算。
x = {'c++','java','python'}
y = {'php','go','python'}
print("集合x中包含而y中不包含的元素:",x - y)
print("集合x或y中包含的所有元素:",x | y)
print("集合x和y都包含的共同元素:",x & y)
print("不同时都包含x和y的元素",x ^ y)
运行结果:
集合x中包含而y中不包含的元素: {'c++', 'java'}
集合x或y中包含的所有元素: {'go', 'java', 'python', 'php', 'c++'}
集合x和y都包含的共同元素: {'python'}
不同时都包含x和y的元素 {'go', 'java', 'php', 'c++'}
计算集合的元素个数
如果要查看集合中有多少个元素,可以使用len(s)方法 。计算集合s中有多少个元素
s = {'c++','java','python'}
print("集合s中的元素个数是:",len(s))
#输出:集合s中的元素个数是:3
检查某个元素是否在集合中
检查某元素是否在集合中,语法格式如下:
x in s #x是元素,s是集合
示例:
s = {'c++','java','python'}
print('python' in s)
如果检查到原始在集合中,则返回True,否则返回False。
常用方法
set集合中也支持很多方法,多数的功能和上面介绍的都差不多,以下为方法列表 。