python字典的作用_python字典方法介绍

python字典方法介绍

方法

功能作用

clear()

删除字典内所有的元素

copy()

返回字典的浅复制

fromkeys()

以指定key创建一个新的字典

get()

返回指定key的值

items()

成对返回所有key和value

keys()

返回字典所有的key

values

返回字典所有value

setdefault()

为key设置对应的默认值

update()

更新字典

pop()

删除键值对

字典内置的方法可以帮我们实现很多功能,下面逐个介绍他们,讲解他们的用途

1. clear, 删除字典内所有的元素

dic = {

'小明': 98

}

dic.clear()

print(dic)

使用clear方法后,字典dic变成了空字典,有人可能会问,这种清空字典的方法和直接将空字典赋值给变量dic有什么区别

dic = {

'小明': 98

}

dic = {}

print(dic)

程序最终输出的结果同样是{},dic 变成了空字典。两种方式,变量dic都变成了空字典,但意义不同,使用clear方法,字典在内存中的地址没有发生变化,但是第二种方法,变量dic指向了一个新的空字典,原来的字典被垃圾回收机制回收了,我们可以通过输出变量的内存地址来验证

dic1 = {

'小明': 98

}

print("使用clear方法前,dic1内存地址为", id(dic1))

dic1.clear()

print(dic1)

print("使用clear方法后,dic1内存地址为", id(dic1))

print("\n\n分割线"+"*"*30 + "\n"*2)

dic2 = {

'小明': 98

}

print("赋值空字典之前,dic1内存地址为", id(dic2))

dic2 = {}

print(dic2)

print("赋值空字典之后,dic1内存地址为", id(dic2))

程序输出结果为

使用clear方法前,dic1内存地址为 4352796640

{}

使用clear方法后,dic1内存地址为 4352796640

分割线******************************

赋值空字典之前,dic1内存地址为 4729716312

{}

赋值空字典之后,dic1内存地址为 4729716168

clear是清空字典,而将一个空字典赋值给变量,并不是清空,只是修改了变量的引用而已。

2. copy, 返回字典的浅复制

dic1 = {

'小明': 98

}

dic2 = dic1.copy()

print(dic1)

print(dic2)

程序输出结果为

{'小明': 98}

{'小明': 98}

dic2是dic1的复制品,他们的内容一模一样,在python中,还有一个模块,可是实现数据的复制功能,它就是copy模块

import copy

dic1 = {

'小明': 98

}

dic2 = copy.copy(dic1)

print(dic1)

print(dic2)

这两段代码都实现了浅复制,浅复制是一种危险的复制,建议你不要使用,因为这种复制并没有创建新的对象,因此,你对dic2的修改会影响到dic1

dic1 = {

'stu': ['小明', '小红']

}

dic2 = dic1.copy()

dic2['stu'].append('小刚')

print(dic1)

程序输出结果为

{'stu': ['小明', '小红', '小刚']}

关于对象的深拷贝和浅拷贝,会有专门的章节进行讲解

3. fromkeys,以指定key创建一个新的字典

stu_dict = dict.fromkeys(['小明', '小刚'], 90)

print(stu_dict)

程序输出结果为

{'小明': 90, '小刚': 90}

fromkeys方法接受两个参数,第一个参数是序列,可以是列表,也可以是元组,方法将以这个序列里的元素做key,生成新的字典。value由第二个参数来决定,我在代码里传入参数90,所有key所对应的value就都是90,如果不传这个参数,默认value为None

4. get,返回指定key的值

get方法,是一种安全的获取value的方法,如果key不存在,则返回default,default可以由你来指定,如果你不指定,则默认为None

empty_dict = {}

print(empty_dict.get('python'))

print(empty_dict.get('python', 100))

程序输出结果

None

100

5. items(),成对返回所有key和value

items()方法通常被用在字典遍历的场景下

score_dict = {

'小明': 96,

'小刚': 98,

'小红': 94

}

for key, value in score_dict.items():

print(key, value)

items()方法返回一个可迭代对象,使用for循环遍历这个可迭代对象时,得到的是一个元组,元组内包含key和 value

下面的代码向你揭示items()方法返回的对象的本质面目

from collections import Iterable

score_dict = {

'小明': 96,

'小刚': 98,

'小红': 94

}

iter_obj = score_dict.items()

print(isinstance(iter_obj, Iterable))

for item in iter_obj:

print(item)

程序输出结果为

True

('小明', 96)

('小刚', 98)

('小红', 94)

6. keys,返回字典所有的key

score_dict = {

'小明': 96,

'小刚': 98,

'小红': 94

}

keys = score_dict.keys()

print(keys, type(keys))

for key in keys:

print(key)

程序输出结果

dict_keys(['小明', '小刚', '小红'])

小明

小刚

小红

keys()方法在py2.7里,返回的是包含了所有key的列表,但在py3.6中,返回的是可迭代对象,遍历这个对象,就可以得到字典所有的key

7. values,返回字典所有value

score_dict = {

'小明': 96,

'小刚': 98,

'小红': 94

}

values = score_dict.values()

print(values, type(values))

for value in values:

print(value)

values()方法返回的是一个可迭代对象,遍历这个可迭代对象,可以获得字典所有的value

8. setdefault,为key设置对应的默认值

这个方法和get有些类似,如果key不存在,则增加新的键值对,如果key已经存在,则不做任何操作

score_dict = {

'小明': 96,

'小刚': 98,

'小红': 94

}

score_dict.setdefault('小明', 100) # 小明这个key已经存在,因此这行语句不产生任何影响

score_dict.setdefault('小丽', 97) # 小丽这个key不存在,增加新的键值对,key为小丽,value为97

print(score_dict)

程序输出结果

{'小明': 96, '小刚': 98, '小红': 94, '小丽': 97}

9. update 更新字典

一般的使用模式是dic1.update(dic2),将dic2的内容更新到dic1中

score_dict = {

'小明': 96,

'小刚': 98,

'小红': 94

}

score_dict2 = {

'小明': 100,

'小丽': 98,

}

score_dict.update(score_dict2)

print(score_dict)

如果一个key,在两个字典中都存在,则value的最终结果取决于dic2

10. pop 删除键值对

不论是使用del 还是使用pop方法删除字典里的键值对,如果key不存在都会引发KeyError异常,pop与del的不同之处在于,pop会返回所删除键值对的value

score_dict = {

'小明': 96,

'小刚': 98,

'小红': 94

}

del score_dict['小红']

print(score_dict.pop('小明'))

print(score_dict)

程序输出结果

96

{'小刚': 98}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值