python中字典常用的方法有哪些,分别有什么作用?

Python013

python中字典常用的方法有哪些,分别有什么作用?,第1张

写法:字典序列[key] = 值***字典为可变类型

常用方法

1、# 新增字典中的数据

dict1 = {'name':'huu','age':20,'gender':'男'}

dict1['id'] = 133

print(dict1)

2、# 修改字典中的数据

dict1['name'] = 'xiauaiguai'

print(dict1)

3、删除字典或删除字典中指定键值对

del()/del:

dict1 = {'name':'huanghu','age':30,'gender':'男'}

# del(dict1) 直接将字典删除了,运行报错

del dict1['name']

print(dict1)

# del dict1[names]删除不存在的key,运行报错

4、清空字典

clear():

dict1.clear()# 清空字典

print(dict1)

5、查找

key值查找

如果当前查找的key存在则返回对应的值,否则则报错

函数查找

get():如果当前查找的key不存在则返回第二个参数值(默认值),

如果省略第二个参数则返回 None

key()

dict1 = {'name':'huhu','age':20,'gender':'男'}

print(dict1['name']) # huhu

print(dict1['id'])# 报错

# 1, get()查找

print(dict1.get('name')) # huanghu

print(dict1.get('id',133)) # 133--如果当前查找的key不存在则返回第二个参数值(默认值)

print(dict1.get('id')) # None--如果省略第二个参数则返回 None

# 2, keys() 查找字典中所有的key,返回可迭代对象

print(dict1.keys()) # dict_keys(['name', 'age', 'gender'])

# 3,values() 查找字典中所有的values,

print(dict1.values()) # dict_values(['huanghu', 30, '男'])

# 4, items() 查找字典中所有的键值对,返回可迭代对象,里面的数据是元组,

元组数据1是字典中的key,元组数据2是字典key对应的值

print(dict1.items()) # dict_items([('name', 'huahu'), ('age', 20), ('gender', '男')])

创建一个空字典自需要一对大括号即可,从已有的键-值对映射或关键字参数创建字典需要使用 dict 函数(类)

把一个列表转为字典,列表的每一项都是长度为2的序列。

还可使用 关键字实参 (**kwargs)来调用这个函数,如下所示:

字典的基本操作与序列十分相似:

字典与序列的不同:

方法 clear 删除所有的字典项(key-value)。

复制,得到原字典的一个新副本。

效果等同于调用 dict(d) 创建新字典。

copy() 执行的是 浅复制 ,若字典的值是一个可变对象,那么复制以后,相同一个键将关联到同一个对象,修改该对象,将同时修改两个字典。

模块copy中的函数deepcopy 可执行深复制。

方法fromkeys 创建一个新字典,其中包含指定的键,且每个键对应的值都是None,或者可以提供一个i额默认值。

方法get 为访问字典项提供了宽松的环境。通常,如果你试图访问字典中没有的项,将引发错误,而get直接返回None,或者可设置默认返回值。

当字典中不存在指定键时, setdefault(k,v) 添加一个指定键-值对;且返回指定键所关联的值。

这三个方法返回值属于一种名为 字典视图 的特殊类型。字典视图可用于迭代。另外,还可确定其长度以及对其执行成员资格检查。

这三个方法自大的特点是不可变,当你的接口试图对其他用户提供一个只读字典,而不希望他们修改的时候,这三个方法是很有用的;而且当原字典发生改变时,这些方法返回的对象也会跟着改变。

方法 pop 可用于获取与指定键相关联的值,并将该键-值对从字典中删除。

popitem随机删除一个键-值对,并返回一个二维的元组 (key, value) ,因为字典是无序的,所以其弹出的顺序也是不确定的。

书上说,这个方法在大数据量时执行效率很高,但没有亲测。

方法update 使用一个字典中的项来更新另一个字典。

1.传统的文字表达式:

>>> d={'name':'Allen','age':21,'gender':'male'}

>>> d

{'age': 21, 'name': 'Allen', 'gender': 'male'}

如果你可以事先拼出整个字典,这种方式是很方便的。

2.动态分配键值:

>>> d={}

>>> d['name']='Allen'

>>> d['age']=21

>>> d['gender']='male'

>>> d

{'age': 21, 'name': 'Allen', 'gender': 'male'}

如果你需要一次动态地建立一个字典的一个字段,那么这种方式比较合适。

字典与列表不同,不能通过偏移量进行复制,只能通过键来读取或赋值,所以也可以这样为字典赋值,当然访问不存在的键会报错:

>>> d[1]='abcd'

>>> d

{1: 'abcd', 'age': 21, 'name': 'Allen', 'gender': 'male'}

>>> d[2]

Traceback (most recent call last):

  File "<pyshell#9>", line 1, in <module>d[2]

  KeyError: 212345678

3.字典键值表

>>> c = dict(name='Allen', age=14, gender='male')

>>> c

{'gender': 'male', 'name': 'Allen', 'age': 14}

因为这种形式语法简单,不易出错,所以非常流行。

这种形式所需的代码比常量少,但是键必须都是字符串才行,所以下列代码会报错:

>>> c = dict(name='Allen', age=14, gender='male', 1='abcd')

SyntaxError: keyword can't be an expression

4.字典键值元组表

>>> e=dict([('name','Allen'),('age',21),('gender','male')])

>>> e

{'age': 21, 'name': 'Allen', 'gender': 'male'}

如果你需要在程序运行时把键和值逐步建成序列,那么这种方式比较有用。

5.所有键的值都相同或者赋予初始值:

>>> f=dict.fromkeys(['height','weight'],'normal')

>>> f

{'weight': 'normal', 'height': 'normal'}