欢迎光临我的代码小窝!我是Couioly,计算机专业大一在读,立志用公众号把学习写成故事,把代码写成诗(虽然目前可能还是“打油诗”水平)。
在这个小窝里,我会:
📝 认真记笔记:课堂精华、自学心得、项目复盘,统统记下来!
🤯 坦诚聊困惑:遇到bug的抓狂、理解概念的挣扎,不藏不掖!
🎉 开心享收获:跑通代码的喜悦、解决难题的兴奋,必须分享!
🗣️ 渴望求交流:评论区就是我们的茶水间,随时等你来聊!
当前主攻:【暑假Python基础知识点整理中...】💻
字典(dictionary)是无序的、可变的,其内容是“键值对”的形式存储的,其中键是唯一的,而值可以有多个。字典的主要特点如下:
字典中的键和值是通过:
进行分割,每相邻两个键值对之间都是以逗号分割,将所有元素放在一个大括号{}
中,其语法格式如下:
dic = {'key_1':'value_1','key_2':'value_2',...,'key_n':'value_n'}
创建空字典:同列表和元组一样,两种语法结构如下所示:
dict_1 = {}
dict_2 = dict()
通过映射函数创建字典:内置的zip(list1,list2)
函数可以将列表或元组对应的位置元素组合为元组,并返回包含这些内容的zip对象,该zip对象可以通过list()
、tuple()
或dict()
转换为需要的类型,list1
在字典中属于键,list2
在字典中属于值,语法格式如下:
dictname = dict(zip(list1,list2))
通过给定的“键值对”创建字典:key
必须唯一且不可变,该参数可以是字符串、数字或元组;value
表示值,是任意的。示例如下:
dic = {"name":"Couioly","age":19,"address":"TianJin"}
print(dic)
Python中还可以使用dict
对象的fromkeys(lis)
方法创建键为lis
列表而值为None
的字典,语法格式如下:
lis = ["Wang","Li","Xiao","Du"]
dictname = dict.fromkeys(lis)
print(dictname)
"""输出结果为:{'Wang': None, 'Li': None, 'Xiao': None, 'Du': None}"""
删除字典:同列表或元组一样,使用del
关键字删除字典对象;若要删除字典的所有元素,则可以使用字典的clear()
方法。
'''删除字典'''
del dictname
'''清空字典'''
dictname.clear()
若要查看字典的所有内容,则可以使用print()
函数。然而,对于字典而言,我们经常用到的是通过指定键得到相应的结果,语法如下:
print(dictname[key]) # 将会输出key对应的value
当使用
key
访问字典时,当键不存在将会抛出异常,因此在访问字典时可以添加if
语句避免抛出异常,例如:print(dictname['key'] if 'key' in dictname else '未找到')
除此之外,获取字典元素Python推荐使用的方法是get()
方法,default
是可选项,用于指定的键不存在时,返回的一个默认值,若省略,则默认为None
。其语法格式如下:
# 语法: dictname.get(key[,default])
dictname = {'key1': 'value1','key2': 'value2','key3': 'value3','key4': 'value4'}
print(dictname.get('key3','未找到'))
print(dictname.get('key5','未找到'))
'''输出结果为:value3 未找到'''
使用字典对象的items()
方法可以获取字典的“键值对”元组列表,可以通过for循环遍历该元组列表,如下示例:
dictname = {'key1': 'value1','key2': 'value2','key3': 'value3','key4': 'value4'}
for i in dictname.items():
print(i)
"""
执行结果:
('key1', 'value1')
('key2', 'value2')
('key3', 'value3')
('key4', 'value4')
"""
如果想要获取具体的每个键和值,则可以按照下述方式获取:
dictname = {'key1': 'value1','key2': 'value2','key3': 'value3','key4': 'value4'}
for key,value in dictname.items():
print(key,value)
"""
执行结果:
key1 value1
key2 value2
key3 value3
key4 value4
"""
Python中还提供了
values()
和key()
方法,用于返回字典的“值”和“键”,它们的使用方法与items()
方法相似,也需要通过for循环遍历该字典列表
添加或修改:字典中添加和修改键值对的语法相同,都是字典名[键]=值
这种形式,语法格式如下:
dictname[key] = value
修改元素的原理:如果新添加的“键”与已存在的“键”重复,那么将使用新的“值”替换掉原来该“键”的值,这也相当于修改字典的元素。
删除字典元素:除了直接使用del
关键字进行删除之外,Python还提供了pop()
和popitem()
两种方法
dic = {'key1': 'value1','key2': 'value2','key3': 'value3','key4': 'value4'}
del dic['key3'] # del关键字删除
dic.pop('key2',0) # pop方法删除指定元素
dic.popitem() # popitem方法删除最后一个插入的键值对
pop(key,default) | popitem() | |
---|---|---|
value | (key,value) | |
若对
pop()
方法的默认值不指定,则当字典中不存在key的键值对时将会抛出异常。
使用字典推导式可以快速生成一个字典,它的形式与列表推导式相似。语法格式如下:
根据键列表和值列表结合zip()
函数快速生成字典
dict_1 = {i:j for i,j in zip(key_list,value_list)}
根据旧字典按照需求生成新字典
new_dict = {i:j for i,j in old_dict.items()}
集合的所有元素都放在一对大括号“{}”内,两个相邻元素间使用,
间隔。Python集合分为两种:
set
frozenset
直接使用{}
创建集合,即将集合赋值给变量,以实现集合的创建。语法格式如下:
setname = {element_1,element_2,element_3,...,element_n}
在创建集合时,若输入了重复的元素,Python会自动只保留一个元素
使用set()
函数将列表、元组等其他可迭代对象转换为集合。语法格式如下:
setname = set(iteration)
# iteration 表示可迭代对象,可以是列表、元组、range对象、字符串等
创建空集合:只能使用set()
函数创建空集合,如:setname = set()
向集合中添加元素:使用add()
方法,语法如下:
setname.add(element)
"""此处的element只能使用字符串、数字以及布尔类型的True或者False,不能使用可迭代对象"""
从集合中删除元素:使用del
关键字可以删除整个集合,也可以使用集合的pop()
方法或者remove()
方法删除一个元素,还可以使用clear()
方法清空集合。
set_name = {'1','2','3','4','5','6','7'}
set_name.pop()
set_name.remove(element)
set_name.clear()
del set_name
注意区分集合的
pop()
语法和列表的pop()
语法的区别,列表的pop()
函数必须指定参数,而集合的pop()
不能指定参数。进行删除操作时注意处理异常。
通过一个实例来理解集合的运算,实例代码如下:
python = {'甲','乙','丙','丁'}
c = {'乙','丁','卯','鸾'}
print("选择python课程的同学:",python)
print("选择c语言课程的同学:",c)
print("即选择python又选择c语言课程的同学:",python & c)
print("选择了课程的同学:",python | c)
print("选择python但没选c语言课程的同学:",python - c)
print("只选了一门课程的同学:",python ^ c)
'''
运行结果为:
选择python课程的同学: {'丁', '甲', '丙', '乙'}
选择c语言课程的同学: {'丁', '乙', '卯', '鸾'}
即选择python又选择c语言课程的同学: {'丁', '乙'}
选择了课程的同学: {'丙', '甲', '卯', '鸾', '丁', '乙'}
选择python但没选c语言课程的同学: {'甲', '丙'}
只选了一门课程的同学: {'丙', '甲', '卯', '鸾'}
'''