今天大计课之余,又自学了一波字典,终于搞明白了python中字典的一些基础语法和用法
一种python提供的数据结构,用来存放具有映射关系的数据
其中一个key对应一个value,构成一一映射关系
其实也就类似于dict储存了两个列表,其中的元素构成一一对应关系
因为一个key映射一个value,所以字典中的key一定是各不相同的。
字典在python中使用花括号{}来囊括不同于列表的方括号[]和元组的圆括号()
dict0 = {
'语文': 90, '数学': 100, '英语': 80}
print(dict0)
{
'语文': 90, '数学': 100, '英语': 80}
dict1 = {
}#创建空字典
print(dict1)
{
}
dict2 = {
(1,2):'one and two',3:'three'}#元组也可以作为key
#但是列表不可以是字典的key,因为key必须是一个不可变类型
print(dict2)
{
(1,2):'one and two',3:'three'}
sorce=[('语文',90),('数学',100)]
dict0=dict(sorce)
sorce1=[['语文',90],['数学',100]]
dict1=dict(sorce1)
sorce2=(('语文',90),('数学',100))
dict2=dict(sorce3)
#dict()的传入可以是列表或者元组
print(dict0)
{
'语文': 90, '数学': 100}
print(dict1)
{
'语文': 90, '数学': 100}
print(dict2)
{
'语文': 90, '数学': 100}
#dict()输出的列表的子列表会被分成两部分,分别成为字典的key和value
#所以说子列表里面最多只能存在2个元素
#特别当内层为元组时,会出现有趣的事情
subjects[('语文'),('数学')]
dict_sub=dict(subjests)
print(dict_sub)
{
'语': '文', '数': '学'}
#被分成两部分
dict3=dict()#创建空字典
#dict()创建字典时,参数也可以不是列表,但是用等号创建,且不需要加引号
dict4 = dict(语文=90,数学=100)
print(dict4)
{
'语文': 90, '数学': 100}
我们经常会出现需要把两个列表元素绑定的情况,那么我们就可以把两个列表用zip()压缩在一起再传入字典
例如
subject=['语文','数学']
sorce=[90,100]
dict5=dict(zip(subject,sorce))
print(dict5)
{
'语文': 90, '数学': 100}
s=['a','b','c']
c=dict.fromkeys(s)#s作为键值列表
print(c)
{
'a': None, 'b': None, 'c': None}
可以看到创建的列表的value全为None,那么怎么让创建的字典value有值呢
可以用到第二个参数
s=['a','b','c']
d=dict.fromkeys(s,10)
print(d)
{
'a': 10, 'b': 10, 'c': 10}
可以第二个参数的传入不可以是一个列表,并且它会作为创建的列表的所有value
dict6={
'语文': 90, '数学': 100, '英语': 80}#首先先创建一个字典
print(dict6['语文'])#通过key进行访问
90
注意:字典不可以用列表中常用的位置索引0,1,2,3…来访问
例如
dict6={
'语文': 90, '数学': 100, '英语': 80}
for i in dict6.keys():
print(i)
语文
数学
英语
for i in dict6.values():
print(i)
90
100
80
for i,j in dict6.items():
print(i,j)
语文 90
数学 100
英语 80
t=list(dict6.keys())#也可以通过list()把其转换成一个列表
print(t)
['语文', '数学', '英语']
dict6={
'语文': 90, '数学': 100, '英语': 80}
print(dict6.get('语文'))
90
print(dict6.get('物理'))
None
print(dict6.get('物理',-1))
-1
dict6={
'语文': 90, '数学': 100, '英语': 80}
dict6.setdefault('物理',95)
print(dict6)
{
'语文': 90, '数学': 100, '英语': 80, '物理': 95}
print(dict6.setdefault('语文'))
90
dict6={
'语文': 90, '数学': 100, '英语': 80}
dict7={
'物理':95}
dict6.update(dict7)#update()函数的传入值是一个字典
print(dict6)
{
'语文': 90, '数学': 100, '英语': 80, '物理': 95}
dict7={
'语文':70}
dict6.update(dict7)
print(dict6)
{
'语文': 70, '数学': 100, '英语': 80, '物理': 95}
#如果value发生了改变,则以传入的字典的value为准
dict6={
'语文': 90, '数学': 100, '英语': 80}
dict6['物理']=95
print(dict6)
{
'语文': 90, '数学': 100, '英语': 80, '物理': 95}
直接赋值就比较简单粗暴了
dict8={
'语文': 90, '数学': 100, '英语': 80,'物理':95}
del dict8['语文']
print(dict8)
{
'数学': 100, '英语': 80, '物理': 95}
m=dict8.pop('数学')#pop()函数会返回key对应的value
print(dict8,m)
{
'英语': 80, '物理': 95} 100
i=dict8.popitem()#popitem()函数会返回删的key对应的(key,value)元组,默认删除最后一对key和value
print(dict8,i)
{
'英语': 80} ('物理', 95)
dict8={
'语文': 90, '数学': 100, '英语': 80,'物理':95}
dict8.clear()
print(dict8)
{
}
dict8={
'语文': 90, '数学': 100, '英语': 80,'物理':95}
dict9=dict8.copy()
print(dict9)
{
'语文': 90, '数学': 100, '英语': 80, '物理': 95}
dict8.clear()
print(dict8)
{
}
print(dict9)
{
'语文': 90, '数学': 100, '英语': 80, '物理': 95}
一般我们都是按顺序给字符串进行格式化,但是有时候字符串中包含大量变量,按顺序格式化不太方便,这时候我们就可以用字典来格式化字符串
print('科目:%(科目)s 成绩:%(成绩)d'%{
'科目':'语文','成绩':80})
科目:语文 成绩:80
字典是python中一种非常有意思的数据结构,其中key与value一一映射的关系可以实现很多nb的功能。
以上就是我对学习字典过程的记录
如有错误,欢迎指正QAQ