当前位置: 首页 > 后端技术 > Python

初识Python字典和集合

时间:2023-03-26 14:22:33 Python

1字典字典类似于列表,也是可变序列,但与列表不同的是,字典是无序的。字典的主要特性:主要特性说明通过键而不是索引读取元素字典类型有时称为关联数组或哈希表(散列)。它通过键将一系列值关联起来,这样就可以通过键从字典中检索特定的项,而不是通过索引。字典是任何数据类型的无序集合。与列表和元组不同,索引值0对应的元素通常称为第一个元素,字典中的元素是无序的。字典是可变的,可以任意嵌套。字典可以原地增长或收缩(无需生成副本),支持任意深度的嵌套,即字典中存储的值也可以是列表或其他字典。字典中的键必须是唯一的在字典中,同一个键不支持多次出现,否则只会保留最后一个键值对。字典中的键必须是不可变的字典中每个键值对的键都是不可变的,只能使用数字、字符串或元组,不能使用列表。1.1字典的创建和删除字典的每个元素包含“键”和“值”'在“键”和“值”之间用“:”符号(冒号)将所有元素分隔成一个大{}语法:mydict={"key1":"value1","key2":"value2","key3":"value3",...,"keyn":"valuen"}解释:①mydict:字典名②key1-keyn:key元素,唯一,不可变,可以是字符串,数字,元组等。③value1-valuen:元素的值,任意数据,不唯一。#-*-coding:utf-8-*-#创建字典student_info={"name":"susan","age":18,"number":123456,"date":20201229}print(student_info)#create空字典my_dict={}my_dict1=dict()print(my_dict)print(my_dict1)结果:{'name':'susan','age':18,'number':123456,'date':20201229}{}{}#-*-coding:utf-8-*-#1.通过映射函数创建字典#mydict=dict(zip(list1,list2))#zip()是多个list对应位置的元素或者tuples组合成一个tuple,返回一个包含这些内容的zip对象,可以使用list,tuple将zip对象转换成list和tuplelist1={"name","age","number","date"}list2={"susan",18,12345678,20201229}mydict=dict(zip(list1,list2))print(mydict)#2.使用给定的“关键字参数”创建字典#my_dict=dict(key1=value1,key2=valye2,...)my_dict=dict(name="susan",age=20,studentnumber=12345678,date=20201229)print(my_dict)#3.使用t的fromkeys()方法他的dict对象创建一个空值的字典我的_dict1)#4.使用现有的列表和元组创建字典my_tuple=("name","age","studentnumber","date")my_list2=["susan",18,12345678,20201229]my_dict2={my_tuple:my_list2}print(my_dict2)结果:{'name':18,'age':'susan','number':20201229,'date':12345678}{'name':'susan','age':20,'学号':12345678,'日期':20201229}{'姓名':无,'年龄':无,'学号':无,'日期':无}{('姓名','年龄','学号','日期'):['susan',18,12345678,20201229]}1.2直接访问字典使用print()输出字典内容使用“键值对”访问字典和使用get()方法获取指定key的值#-*-coding:utf-8-*-my_dict={'name':18,'age':'susan','number':20201229,'date':12345678}#1.直接打印()输出print(my_dict)#2.使用键值对print(my_dict["name"])print(my_dict["number"])#3.使用get()方法print(my_dict.get("name"))print(my_dict.get("number"))结果:{'name':18、'age':'susan','number':20201229,'date':12345678}182020122918202012291.3使用dictionaryobject()方法遍历字典,得到字典的“键值对”列表语法:my_dict.items()描述:①my_dict:字典对象②返回值:可遍历(“键值对”)元组列表,可以使用for循环遍历元组#-*-coding:utf-8-*-my_dict={'name':18,'age':'susan','number':20201229,'date':12345678}my_tuple=my_dict.items()print(my_tuple)#遍历tuple对象,得到字典中的每个元素foriteminmy_tuple:print(item)#遍历tuple对象,得到key每个元素的key和value,valueinmy_tuple:print(key,value)#还有values()和keys()方法,使用与items()方法类似的结果:dict_items([('name',18),('age','susan'),('number',20201229),('date',12345678)])('name',18)('age','susan')('number',20201229)('date',12345678)name18agesusannumber20201229date123456781.4添加、修改和删除字典元素Add:#Syntaxmy_dict[key]=value#-*-coding:utf-8-*-my_dict={'name':18,'age':'susan','number':20201229,'date':12345678}print(my_dict)my_dict["color"]="yellow"print(my_dict)结果:{'name':18,'age':'susan','编号':20201229,'日期':12345678}{'name':18,'age':'susan','number':20201229,'date':12345678,'color':'yellow'}修改:直接修改对应key的值即可#-*-coding:utf-8-*-my_dict={'name':18,'age':'susan','number':20201229,'date':12345678}print(my_dict)my_dict["name"]="susan"my_dict["age"]=18print(my_dict)结果:{'name':18,'age':'susan','number':20201229,'date':12345678}{'name':'susan','age':18,'number':20201229,'date':12345678}1.5字典理解可以快速生成字典#-*-coding:utf-8-*-importrandom_dict={i:random.randint(1,10)foriinrange(1,6)}print(my_dict)result:{1:10,2:6,3:8,4:2,5:2}2常规数学中的集合集合是基本类似,也可以用来存储不重复的元素。集合是无序和可变的,而冻结集是不可变的集合。2.1Set创建#-*-coding:utf-8-*-#1.直接使用{}创建#语法:setname={e1,e2,e3,...en}setname1={"red","yellow","white","black","blue","green"}setname2={11,22,33,44,55,66}setname3={"学生信息",123456,("susan",18)}print(setname1)print(setname2)print(setname3)#2.使用set()函数创建setname4=set("我们都有一个小目标:1亿")setname5=set([66,77,88,99,100])setname6=set(("老实说","我真的很饿"))print(setname4)print(setname5)print(setname6)result:{'green','red','yellow','black','blue','white'}{33,66,11,44,22,55}{123456,'学生信息',('susan',18)}{'one',':','small','yes','men','me','one','standard','I','all','billion'}{66,99,100,77,88}{'说实话','我真的很饿'}2.2集合的增删改#-*-coding:utf-8-*-#1.给集合添加元素setname1={"red","yellow","White","Black","Blue","Green"}print("原集合为:{}".format(setname1))setname1.add("新添加的颜色")print("添加了collectionis:{}".format(setname1))#2.从集合中删除元素#del删除整个集合#pop()移除一个元素#remove()移除指定元素#clear()清除集合setname2={11,22,33,44,55,66}print(setname2)delsetname2#print(setname2)#setname3打印aft后会报错erdeletion={110,220,330,440,550,660}#print("setname3集合本身的所有元素是:".format(str(setname3)))print("集合本身是",setname3)setname3.pop()print("setname3删除一个元素为:",setname3)setname3.remove(660)print("setname3delete除指定元素660为:",setname3)结果:原集合为:{'yellow','blue','red','green','black','white'}添加集合为:{'yellow','blue','red','newaddedcolors','green','black','white'}{33,66,11,44,22,55}集合本身是{550,330,110,660,440,220}setname3删除一个元素:{330,110,660,440,220}setname3删除指定元素660:{330,110,440,220}2.3交集和并集使用的符号对于和差运算有:交集(&)、并集(|)、差集(-)#-*-coding:utf-8-*-setname1={"red","yellow","white"}setname2={"Black","Blue","White","Colorless"}print("Setsetname1is:",setname1)print("Combinesetname2is:",setname2)print("Intersectionis:",setname1&setname2)print("联合是:",setname1|setname2)print("不同是:",setname1-setname2)结果:集合setname1是:{'white','red','yellow'}结合setname2是:{'白色','黑色','蓝色','colorless'}交集是:{'white'}并集是:{'black','blue','yellow','colorless','white','red'}区别是:{'red','yellow'}3lists,elements,dictionaries,sets的区别数据结构是可变的还是重复的是否有序:value}设置变量不可重复无序{}