字典
字典是一种基础元素为“键-值对”,无序可变,可嵌套可迭代的数据结构。
- 基础元素是键-值对,通过键名而不是索引号来索引访问值
- 字典中的元素是无序的,意味着无法通过索引来访问
- 字典是可变的,元素可以增删改
- 可以任意嵌套,支持自动解包
- 键必须唯一,且必须是不可变类型,如字符串,数字,元组
- 值可以是任何类型,而且值可以重复
1 字典的创建方式 1.1 直接使用"{}" 1.2 使用dict()
#模拟数据库
database=[]
flag = 0
while True:
if(flag>5):
break
username = input("输入用户名:")
password = input("输入密码:")
email = input("输入邮箱")
#定义一个字典
user = {}
#将信息保存在字典
user['username'] = username
user['password'] = password
user['email'] = email
#保存到数据库
database.append(user)
flag+=1
print(database)
方法:
#查询元素 """ 1,根据key获取值,如果key在字典中没有存在则报出keyerror dict[key] = value 2,字典内置函数: get(key) ----->value 如果取不到值则不会报错,返回none get(key,default) -----》value 如果能够取到值则返回字典中的值,如果取不到则返回default 的值 items() keys() values() """
dict2 = {'张三':88,'李斯':22,'王五':97,'赵六':34,'篱笆':96}
#考试分数大于90分的人
#尝试对字典进行遍历
for k in dict2: #对字典遍历的结果是:只取出字典的key
print(k)
#字典里的函数:items(),values(),keys()
print(len(dict2))
print(dict2.items())
print(dict2.values())#取出字典所有值,保存到列表
print(dict2.keys()) # 取出字典所有键,保存到列表
for i in dict2.items():
print(i)
for key,value in dict2.items():
if(value>90):
print(key)
#找人: in 判断元素有没有在字典中的key中出现
if '王五' in dict2:
print('yes')
else:
print("no")
print(dict2.get("赵飞")) #与直接用键查找相比他找不到不会报错,且可以设置默认值
print(dict2.get("王五",99))
print(dict2.get("李四",99))
#删除 """ 1,del 2,字典里的内置函数: pop(key,default) 根据key删除字典中的键值对 返回值是 只要删除成功,则返回键值对的值value pop的默认值,往往是在删除的时候没有找到对应的key,则返回default默认值 popitem() clear() """
#del dict2['王'] #keyerror
dict2.pop('李斯',80)
print(dict2.pop('李斯',11))
print(dict2)
result = dict2.popitem() #随机删除字典中键值对,一般从末尾删除
print(result)
print(dict2)
字典中没有下标一说 key在字典中是唯一的 #字典的增删改查 增加元素对比: list1 = [] list1.append(element) dict1 ={} dict1[key] = value 修改: list1[index] = newvalue dict1[key] = newvalue 查询: list[index] ----->element dict1[key] ----->value 删除: del list[index] del dict[key]
dict1 = {} #空字典
dict2 = dict() #空字典
dict3 = {"ID":1213}
dict4 = dict([('name','lucy'),('id',133)]) #列表依靠元组强转字典(列表中元素一定要符号键值对形式)
print(dict4)#list可以转成字典,但是前提:列表中的元素都要成对出现
#增
dict6 ={}#格式:dict6[key] = value;,同名key放入只会替换原来value
dict6['brand'] = 'huawei'
dict6['type'] = 'p30'
dict6['price'] = 9000
dict6['color'] = 'black'
print(dict6)
其他内置函数: update() #字典不支持+操作,所以用内置函数[]+[] 合并 formkeys(seq,default) ----->将seq转成字典形式,如果没有指定默认的value则用none ---->如果指定default 则用default代替
集合
集合是数学中最基本的概念之一,指定义明确的不同对象的聚集。集合的基本操作包括交集,并集,补集等。集合类是无序且没有重复元素,可变,可迭代的数据类型。
- 集合无序,没有重复元素,对象可变,可迭代
- 集合只能接受不可变对象作为其元素
- 集合常用于高效找出两个数据集中的共同点和差异点
创建空集合:s1=set(),空{}表示字典
集合添加元素的方法: 1,add() 往集合中添加元素 数字/字符串/元组 2,update() 可以将集合合并 集合删除元素的方法: 1,remove 使用remove删除集合中的函数,如果有直接删除,如果没有程序报错 2,pop 使用pop 删除是随机删除集合中的元素 如果集合没有元素程序报错 3,discard 使用discard 删除集合中的函数,如果有直接删除,如果没有不做任何操作
#添加一个元素
s3.add('33')
s3.add(0)
print(s3)#无序
#update()
t1 = ("凌志玲",'88')
s3.add(t1)
print(s3) #add当整体添加,只添加一个元素
s3.update(t1)#可以添加多个元素
print(s3)
#删除 remove pop discard clear
s3.remove('88') #如果元素存在就删除,如果不存在就报错
s3.pop() #随机删除,一般删除第一个
s3.discard('1') #类似remove 但是不存在不报错
print(s3)
#其他: 符号操作 print(6 in s3) #print(s2+s3) 不支持+,* print(s3-arr) #差集 支持-,也可以用difference() print(s3&arr) #交集 支持& 也可以用intersection() print(s3|arr) #并集 支持| 1,交集: 使用"&"符号连接多个集合,得到相同的元素 2并集 使用"|"符号连接多个集合得到集合中的全部元素