沐枫凌-python 新手教学(7-4)--字典

终于到基础数据结构的最后了,字典(Dict)是python中用途最大,最好玩的东西了

认识字典

什么是字典?正如生活中的字典一样,python中的字典可以进行查询,反馈等。

python中的字典由一大堆的  关键字(key)  和   值 (value) 构成,其中有一条规则和数学中的函数相似就是一个关键字只能对应一个值,而一个值可以对应多个关键字,即一个x值对应一个y值,而一个y值可对应多个x值

可以说是囊括了众多变量和值的集合,但是要注意的是,字典的关键字不能是没有赋值变量,其他任何合法的都行,例子

a = {'xrl':123,'dsa':321,'dra':55}
b = {1:12,2:23,3:432}
c = {print(123):'23'}
print(a)
print(b)
print(c)

虽然我是这么举例的,但是极力不推荐第2,3种字典,在运行的时候,你会发现使用第2,3种字典会是你有点搞不清关键字与值,大家可以自己复制下来运行一下看下结果

字典的通式

看过字典的例子之后,我们可以看出字典的通式是{关键字1:值1,关键字2:值2,关键字3:值3}

有人会说字典是用的括号和集合一样是{}大括号,但是python不会误解集合和字典,python会默认{}内只有元素的序列为集合,{}同时有关键字和值的为字典,而且{}什么都没时为表示为空字典,而不是空集合

获取字典内关键字对应的的值

直接给例子

Dict1 = {'name':'xrl','age':17,'sex':'male'}
print(Dict1['name'],Dict1['age'],Dict1['sex'])

结果是

xrl 17 male

执行程序类值

我们同样也可以讲值设定为一个可执行的程序,例

Dict2 = {'tell me name':print('my name is python'),'what is 1+1':1+1}
print(Dict2['tell me name'],Dict2['what is 1+1'])

有时可以方便你运行的自动化

获取值对应的关键字

这会有点复杂,就像我们在数学函数中用 y求x 比 x求y 难一样……,下面是方法

Dict3 = {'xx':1,'as':1,'fe':2,'zv':3,'qw':3,'fd':4}
#假设我们要求值为3的关键字
for i in Dict3.keys():                #Dict3.keys()这个函数用于返回一个包囊了字典内所有关键字的列表
	if Dict3[i] == 3:
		print('3 对应的关键字有',i)

结果为

3 对应的关键字有 zv
3 对应的关键字有 qw

我们需要通过循环的方式一个一个的去套,套中了话就是该值的关键字

字典的修改

手动修改

我们可以通过和列表一样的老套路来进行修改

Dict4 = {'xx':1,'as':1,'fe':2,'zv':3,'qw':3,'fd':4}
Dict4['xx'] = 3
print(Dict4)

从结果中我们可以看到'xx'关键字的值从原来的1改为了3

{'xx': 3, 'as': 1, 'fe': 2, 'zv': 3, 'qw': 3, 'fd': 4}

批量修改

还是一样要用到循环,假设我们要把所有对应值不是3的关键字的值全部修改为3,大家可以复制下来操作一下

Dict5 = {'xx':1,'as':1,'fe':2,'zv':3,'qw':4,'fd':4,'ds':1,'df':5,'zxc':7,'qe':3,'zq':6,'ew':9}
for i in Dict5.keys():
    if Dict5[i] != 3:
        Dict5[i] = 3
        print('值不是3的关键字的值已经修改成了3')
    else:
        print('这个关键字的值是3,所以没有修改')
print(Dict5)

字典关键字与值的添加

和关键字的值的修改一样,只不过当关键字没有时,就成了添加关键词与值

Dict6 = {'xx':12,'yy':32}
Dict6['zz'] = 43
print(Dict6)

结果为

{'xx': 12, 'yy': 32, 'zz': 43}

字典关键字的删除

使用 python中的del关键字删除,例

Dict7 = {'xx':12,'yy':32}
del Dict7['xx']
print(Dict7)

结果为

{'yy': 32}

字典的内置函数

下面是字典的内置函数

函数 结果 用处

dict.clear(a)

a为{}(空字典)    #a字典内的所有的关键字被删除 用于删除字典内所有的关键字(当然值也跟着没了)
b = dict.copy(a) b字典浅复制了a字典内的内容 用于字典的浅复制
b = dict.fromkeys(a,12) b复制了a中所有关键字,并将所有关键字的值设定为12 用于关键字的全部复制,及重新定义所有关键字的值
a.get('xxx') 返回了a字典中关键字为'xxx'的值(前提是a字典中有'xxx') 返回字典中对应关键字的值,和a['xxx']相似,但是若没有的对应关键字的话系统不会报错,而是什么都不返回
'xxx' in a 返回True or False 判断关键字是否存在于字典中
a.items() 返回dict_items([(关键字1,值1),……]) 返回可以遍历的元组列表(要用list(……)才能成为真正的列表,列表中的每一项元组中,前面是关键字,后面是值)
a.keys() dict.keys([关键字1,关键字2,关键字3,……]) 以列表的形式返回字典中所有的关键字
a.setdefault(关键字,值)

若关键字存在,返回关键字的值

若不存在,则添加该关键字于值并返回值

合并了  a['xxxxx']查找  ,与  a['yyyy'] = ……修改与添加   的样子
b.update(a) 将字典a中的所有关键字与值添加到b中 用与字典的更新,不同于 字典1 = 字典2  这是一种叠加式的添加
a.values() dict_values([值1,值2,值3,……]) 返回字典内所有的值

关于浅复制(浅拷贝)的解释

在上面所呈现的函数列表中有一个字典的函数为dict.copy(字典)#用于字典的浅复制(浅拷贝)

大家可以参考右边的网站去了解一下关于浅复制(浅拷贝)>>python的浅拷贝<<

那么python主要的数据的结构就基本讲完了,大家可以试着从数据和算法中发现python的方便给你带来的快感!

猜你喜欢

转载自blog.csdn.net/weixin_42582160/article/details/81006692
7-4