字典
格式
字典名 = {}
dict1 = {}
print(type(dict1))
# 输出结果<class 'dict'>
元素
键值对。 注意:键是唯一的,值是允许重复的。
添加
字典名[key] = value
注意:key是唯一的,所以在添加的时候如果出现同名的key,后面key对应的value则替换原来的。
dict1['name'] = '测试'
print(dict1)
# 输出结果{'name': '测试'}
dict1['name'] = '测试'
dict1['age'] = '18'
dict1['sex'] = '男'
dict1['name'] = '233'
print(dict1)
# 输出结果{'name': '233', 'age': '18', 'sex': '男'}
修改
键可以添加或者删除但是不能修改。只能修改键后面的值。
字典名[key] = 新的value 与添加一样,确定是添加还是修改取决于字典里有没有键,存在是修改,不存在是添加。
删除
clear()
dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
dict1.clear()
print(dict1)
# 输出结果为{}
pop()
根据key实现删除,删除的是键值对。pop的返回值key对应的value。
dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
r = dict1.pop('sex')
print(r)
# 输出结果 男
print(dict1)
# 输出结果 {'name': '测试', 'age': '18'}
popitem()
返回值是元组:(key,value)从后往前删除
dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
r = dict1.popitem()
print(r)
# 输出结果('sex', '男')
print(dict1)
# 输出结果{'name': '测试', 'age': '18'}
del
dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
del dict1['age']
print(dict1)
# 输出结果{'name': '测试', 'sex': '男'}
del dict1 # 整个变量都删除了
取值
get(key,默认值选填) 根据key得到value的值
dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
r = dict1.get('name')
print(r)
# 输出结果为测试
当然我们也可以使用 dict1['name']的方式取值,但是如果输入的key不存在,get函数返回为None,而另外的方式则会报错。get还有另一种好处,如果输入的key不存在,则会返回默认值。所以一般我们取值都会使用get。
遍历
如果使用for...in直接遍历字典,取出的是字典的key。
dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
for i in dict1:
print(i)
# 输出结果为name age sex
获取字典中所有的值
values()
dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
r = dict1.values()
print(r)
# 输出结果为dict_values(['测试', '18', '男'])
for i in dict1.values():
print(i)
# 输出结果为测试 18 男
获取字典中所有的键
keys()
dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
r = dict1.keys()
print(r)
# 输出结果为dict_keys(['name', 'age', 'sex'])
获取键值对
items()
dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
r = dict1.items()
print(r)
# 输出结果为dict_items([('name', '测试'), ('age', '18'), ('sex', '男')])
可以使用此函数获取到所有的key和value
dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
r = dict1.items()
print(r)
# 输出结果为dict_items([('name', '测试'), ('age', '18'), ('sex', '男')])
for k, v in dict1.items():
print(k, v)
# 输出结果为name 测试, age 18, sex 男
补充
在这里补充一些函数介绍。
setdefault()
可以添加键值对,类似 dict['key'] = value,但是如果有相同的key时 不会修改数据,这个方法了解就好。
dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
dict1.setdefault('联系方式','123456789')
print(dict1)
# 输出结果{'name': '测试', 'age': '18', 'sex': '男', '联系方式': '123456789'}
update()
可以实现两个字典的合并
dict1 = {'name': '测试', 'age': '18', 'sex': '男'}
dict2 = {'联系方式': '123456789'}
dict1.update(dict2)
print(dict1)
# 输出结果{'name': '测试', 'age': '18', 'sex': '男', '联系方式': '123456789'}
集合
特点
没有重复,无序的,所以没有下标。
格式
变量名 = {值} 花括号里不是以键值对的方式存在,而只有值时类型为集合。
set1 = set() # 声明空的set
set2 = {"ceshi"}
print(type(set2))
# 输出结果为<class 'set'>
使用
如果给了一个列表[1,1,7,7,9,2,5,5,3,4] 我们可以快速的去重
list1 = [1, 1, 7, 7, 9, 2, 5, 5, 3, 4]
print(set(list1))
# 输出结果为{1, 2, 3, 4, 5, 7, 9}
添加
add()
set3 = set()
set3.add("测试")
print(set3)
# 输出结果为{'测试'}
set3.add("练习")
print(set3)
# 输出结果为{'练习', '测试'}
update()
合并方法
set3 = {'学生', '老师', '学校', '校长'}
set1 = {'主任'}
set1.update(set3)
print(set1)
# 输出结果为{'校长', '学校', '老师', '学生', '主任'}
注意:每次运行时顺序都是不一样的,set是无序的。
删除
clear()
将元素清空
set3 = {'学生', '老师', '学校', '校长'}
set3.clear()
print(set3)
# 输出结果为set()
remove()
将元素从集合中删除,如果元素不存在则会报错。
set3 = {'学生', '老师', '学校', '校长'}
set3.remove('学生')
print(set3)
# 输出结果{'校长', '学校', '老师'}
discard()
也是将元素从集合中删除,如果元素不存在不会报错。
set3 = {'学生', '老师', '学校', '校长'}
set3.discard('学生')
print(set3)
# {'校长', '学校', '老师'}
pop()
随机删除集合中的任意一个元素
set3 = {'学生', '老师', '学校', '校长'}
set3.pop()
print(set3)
其他方法
方法 | 描述 |
---|---|
add() | 向集合添加元素。 |
clear() | 删除集合中的所有元素。 |
copy() | 返回集合的副本。 |
difference() | 返回包含两个或更多集合之间差异的集合。 |
difference_update() | 删除此集合中也包含在另一个指定集合中的项目。 |
discard() | 删除指定项目。 |
intersection() | 返回为两个其他集合的交集的集合。 |
intersection_update() | 删除此集合中不存在于其他指定集合中的项目。 |
isdisjoint() | 返回两个集合是否有交集。 |
issubset() | 返回另一个集合是否包含此集合。 |
issuperset() | 返回此集合是否包含另一个集合。 |
pop() | 从集合中删除一个元素。 |
remove() | 删除指定元素。 |
symmetric_difference() | 返回具有两组集合的对称差集的集合。 |
symmetric_difference_update() | 插入此集合和另一个集合的对称差集。 |
union() | 返回包含集合并集的集合。 |
update() | 用此集合和其他集合的并集来更新集合。 |
其中可以使用这三种符号 &、|、- 分别 代表交集、并集、差集
列如
set1 = {1, 2, 3, 4, 5, 6}
set2 = {3, 4, 5, 6, 7, 8}
print(set1 & set2) # 交集 {3, 4, 5, 6}
print(set1 | set2) # 并集 {1, 2, 3, 4, 5, 6, 7, 8}
print(set1 - set2) # 差集 {1, 2}
总结
区别
list:允许重复,有序 有下标 [ ]
tuple:允许重复,里面的元素不能增加删除修改,只能查看 ( )
dict:键值对存在,键:唯一,值:允许重复 { }
set:不允许重复,无序 { }
类型转换
list ----------》tuple,set(转换set时可能会发生去重,长度发生改变)
tuple ----------》list,set(转换set时可能会发生去重,长度发生改变)
set ----------》list,tuple
dict ----------》list,tuple,set 只是将字典的key放到了list,tuple,set中
list ----------》dict 需要特殊要求 例如list1 = [('a',1),('b',2),('c',3)] 这种格式才能转换 里面的结构不限list或者tuple