Python基本数据类型(字典 集合)

字典

创建字典
字典可以存储任意类型对象,存储格式是kv,kv对用冒号(:)分隔,kv对之间用逗号(,)分隔,最外层用花括号{}括起来,key在字典里类型是可hash的对象,value可以重复,key可以是数字,字符串,元组

# -*- coding:utf-8 -*-

dict1 = {'id':1,'name':'aa','age':23}
print(type(dict1)) # <class 'dict'>

操作字典
访问字典的值,根据key查找value

print(dict1['id']) # 1
print(dict1['name']) # aa
print(dict1['age']) # 23

字典添加元素,更新value值

dict1['salary'] = 5.6
print(dict1) # {'id': 1, 'name': 'aa', 'age': 23, 'salary': 5.6}
dict1['salary'] = 6.8
print(dict1) # {'id': 1, 'name': 'aa', 'age': 23, 'salary': 6.8}

字典删除单个kv对,用del,清空整个字典用clear()

del dict1['age']
print(dict1) # {'id': 1, 'name': 'aa', 'salary': 6.8}
dict1.clear()
print(dict1) # {}

更改key的值

print(dict1)  # {'id': 1, 'name': 'aa', 'salary': 6.8}
dict1['u_id'] = dict1['id']
del dict1['id']
print(dict1)  # {'name': 'aa', 'salary': 6.8, 'u_id': 1}
dict1['name1'] = dict1.pop('name')
print(dict1)  # {'salary': 6.8, 'u_id': 1, 'name1': 'aa'}

对字典里的同一个key进行多次赋值时,字典只保留最后一次赋值的结果

print(dict1)  # {'salary': 6.8, 'u_id': 1, 'name1': 'aa'}
dict1['u_id'] = 2
dict1['u_id'] = 3
dict1['u_id'] = 4
print(dict1) # {'salary': 6.8, 'u_id': 4, 'name1': 'aa'}

常用函数

dict1 = {'a': 2, 'f': 6}
dict2 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
print(len(dict2))  # len() 返回字典的key个数
dict3 = dict2.copy()
print(dict3)  # copy() 返回字典的浅复制
print(dict2.values())  # values() 返回字典的所有value
print(dict2.get('a'))  # get(key) 通过key 获取 value值
print(dict.fromkeys([1, 2, 3, 4]))  # fromkeys(seq) 将序列seq里的元素作为字典的key,value不指定的话则为默认值
print(dict2.items())  # items() 返回字典所有的kv对
print(dict2.keys())  # keys() 返回字典所有的key
dict2.setdefault('e')
print(dict2)  # setdefault(key[,default])  key存在则返回对应value,不存在则添加key,value不指定则默认None
dict2.update(dict1)
print(dict2)  # update() 将dict1 的kv更新到dict2 中,key存在则更新,不存在则添加
print(dict2.pop('e'))  # pop() 删除指定的key对应的kv对,并返回value
print(dict2)
dict2.clear()
print(dict2)  # clear() 清空字典
''' 
输出结果:
4
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
dict_values([1, 2, 3, 4])
1
{1: None, 2: None, 3: None, 4: None}
dict_items([('a', 1), ('b', 2), ('c', 3), ('d', 4)])
dict_keys(['a', 'b', 'c', 'd'])
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': None}
{'a': 2, 'b': 2, 'c': 3, 'd': 4, 'e': None, 'f': 6}
None
{'a': 2, 'b': 2, 'c': 3, 'd': 4, 'f': 6}
{}
'''

集合

创建集合
集合是一个无序不重复元素序列,可以用花括号{}或者set()创建,
创建空集合用set(),{}是用来创建空字典的

s1 = {1,2,3,'a','b'}
s2 = set('abcdef123')
print(type(s1),type(s2))
print('s1:',s1)
print('s2:',s2)
print(type(set()))
print(type({}))
'''
<class 'set'> <class 'set'>
s1: {1, 2, 3, 'b', 'a'}
s2: {'b', 'f', 'd', '2', 'a', '1', 'c', '3', 'e'}
<class 'set'>
<class 'dict'>
'''

操作集合
添加元素,add() 和 update() 都可以,区别是: add() 值能添加一个元素,update()可以添加多个元素,不过update()的参数必须是 iterable

s1.add(1)
s1.add('c')
print(s1)  # {1, 2, 3, 'c', 'a', 'b'}
s1.update('d', 'e')
print(s1)  # {1, 2, 3, 'c', 'e', 'a', 'd', 'b'}
s1.update(4,'f') # TypeError: 'int' object is not iterable

删除元素,remove() 和 discard()
区别在于remove() 如果指定的元素不存在会报错: KeyError
discard() 不会

s1.discard(1)
print(s1) # {2, 3, 'a', 'b', 'e', 'c', 'd'}
s1.remove('a')
print(s1) # {2, 3, 'b', 'e', 'c', 'd'}

集合运算

s3 = {1,2,3,4,5}
s4 = {4,5,6,7,8}
print(s3-s4) # '-' 返回 s3 有 s4 没有的元素集合
print(s3|s4) # '|' 返回 s3 和 s4 所有元素的集合
print(s3 & s4) # '&'  返回 s3 和 s4 的交集元素集合
print(s3 ^ s4) # '^'  返回 s3 和 s4 各自独有的元素集合
'''
{1, 2, 3}
{1, 2, 3, 4, 5, 6, 7, 8}
{4, 5}
{1, 2, 3, 6, 7, 8}
'''

在这里插入图片描述
常用函数

s1 = {1,2,3,4,5,6,7,8,9}
s3 = {1,2,3,4,5,10}
s4 = {4,5,6,7,8,11}
print(len(s1)) #  len() 返回集合元素个数
print(s1.difference(s3,s4)) # difference() 返回s1包含,s3和s4不包含的元素集合
print(s3.intersection(s4,s1)) #  intersection() 返回多个集合的交集
s1.difference_update(s3,s4)
print(s1) #  difference_update() 移除s1中包含于s3和s4的元素
'''
9
{9}
{4, 5}
{9}
'''
s1 = {1,2,3,4,5,6,7,8,9}
s3 = {1,2,3,4,5,10}
s4 = {4,5,6,7,8,11}
s1.intersection_update(s3,s4)
print(s1) # intersection_update() 将多个集合的交集保留到s1中
'''
{4, 5}
'''
s1 = {1,2,3,4,5,6,7,8,9}
s3 = {1,2,3,4,5}
s4 = {4,5,6,7,8,10}
print(s1.isdisjoint(s3)) # False  s1和s3 是否有交集,有返回False,没有返回True
print(s3.issubset(s1)) # True     issubset() 判断s3是否是s1的子集
print(s1.issuperset(s3)) # True   issuperset() 判断s1 是否包含 s3
print(s3.symmetric_difference(s4)) # symmetric_difference() 返回包含s3和s4交集之外的元素集合
s3.symmetric_difference_update(s4)
print(s3) # symmetric_difference_update() 移除s3中和s4的交集,并把s4中和s3交集之外的元素更新到s3中
s3 = {1,2,3,4,5}
s4 = {4,5,6,7,8,10}
print(s3.union(s4,s1)) # union() 返回多个集合的并集
'''
False
True
True
{1, 2, 3, 6, 7, 8, 10}
{1, 2, 3, 6, 7, 8, 10}
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
'''

猜你喜欢

转载自blog.csdn.net/zZsSzss/article/details/102955724