字典

  • 1.什么是字典对象
  • 2. 创建字典对象
  • 3.获取dict里面的内容
  • 3.1 通过[key]的方式
  • 3.2 通过get()函数(推荐)
  • 4. 元素的添加,修改,删除
  • 4.1 添加
  • 4.2 修改
  • 4.3 update(更新)
  • 4.4 删除元素
  • popitem()函数
  • 5. 序列解包


1.什么是字典对象

  • 字典是另一种可变容器模型,且可存储任意类型对象。
  • 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
  • 键的类型必须相同,如字符串,int等类型
  • 值的类型可以不唯一

2. 创建字典对象

# coding=utf-8

## 字典类型的创建
## 使用花括号来创建
dict01={'name':'张三','age':18,'score':98.5}
print(dict01)

## 通过函数dict来创建
## dict使用list,元组的方式来创建
dict02=dict([('name','张三'),('age',18),('score',99.8)])
print(dict02)

## 通过fromkey函数来创建只有key的dict对象
dict03=dict.fromkeys(['name','age','score'])
print(dict03)

结果

{'name': '张三', 'age': 18, 'score': 98.5}
{'name': '张三', 'age': 18, 'score': 99.8}
{'name': None, 'age': None, 'score': None}

3.获取dict里面的内容

3.1 通过[key]的方式

dictObject={'name':'张三','age':19,'score':99.6}
print(dictObject['name'])	# 结果为张三
print(dictObject['sex'])	# 没有sex这个键,抛出异常

这种方式获取值,如果当前这个key不存在,则直接报异常

3.2 通过get()函数(推荐)

使用get函数获取,如果不存在当前key,只会返回None值,不会抛异常,或者我们可以设置默认值返回

## 通过get()函数获取
dictObject={'name':'张三','age':19,'score':99.6}
print(dictObject.get('name'))	# 结果为“张三”
# 设置默认值,如果没有则返回默认值
print(dictObject.get('sex','null'))

4. 元素的添加,修改,删除

4.1 添加

如果添加的元素,键的名称与字典里某个元素的键名相同,则会覆盖之前的键值对

>>> a={"name":"张三",'age':18,'score':99.9}
>>> a['sex']='男'
>>> a
{'name': '张三', 'age': 18, 'score': 99.9, 'sex': '男'}

4.2 修改

直接覆盖旧元素即可

>>> a={"name":"张三",'age':18,'score':99.9}
>>> a['name']='李四'
>>> a
{'name': '李四', 'age': 18, 'score': 99.9}
>>>

4.3 update(更新)

字典对象提供了一种update方法,可以接受字典类型,来更新当前字典对象

相同的元素直接覆盖,新元素则直接添加

>>> b={'name':'张三','sex':'男'}
>>> a={'score':99,'name':'李四'}
>>> a.update(b)
>>> a
{'score': 99, 'name': '张三', 'sex': '男'}
>>>

4.4 删除元素

删除指定元素

pop函数会删除指定键所代表的的键值对,并且会返回值的内容

>>> a={'name':'张三','age':18,'sex':'男'}
>>> a
{'name': '张三', 'age': 18, 'sex': '男'}
>>> a.pop('name')
'张三'
>>> a
{'age': 18, 'sex': '男'}

删除所有元素

clear函数会删除字典里所有的对象

>>> a={"name":"张三",'age':18,'score':99.9}
>>> a
{'name': '张三', 'age': 18, 'score': 99.9}
>>> a.clear()
>>> a
{}
>>>

popitem()函数

随机删除一个字典里面的键值对,并且返回该键值对
 
因为字典不同于集合,字典是无序的没有第一个元素,在无序的删除字典元素时使用

>>> a={"name":"张三",'age':18,'score':99.9}
>>> a
{'name': '张三', 'age': 18, 'score': 99.9}
>>> a.popitem()
('score', 99.9)
>>> a
{'name': '张三', 'age': 18}
>>> a.popitem()
('age', 18)
>>> a
{'name': '张三'}
>>>

5. 序列解包

dict01={
    'name':'Daiv',
    'age':18,
    'sex':'男',
    'score':99.8
}

# 默认以解包的方式获取所有的键
a,b,c,d=dict01
print(a,end='\t')
print(b,end='\t')
print(c,end='\t')
print(d,end='\t')
print()

# 获取键
a,b,c,d=dict01.keys()
print(a,end='\t')
print(b,end='\t')
print(c,end='\t')
print(d,end='\t')
print()

# 获取值
a,b,c,d=dict01.values()
print(a,end='\t')
print(b,end='\t')
print(c,end='\t')
print(d,end='\t')
print()

# 获取键值对对象
a,b,c,d=dict01.items()
print(a,end='\t')
print(b,end='\t')
print(c,end='\t')
print(d,end='\t')
print()

结果

name    age     sex     score   
name    age     sex     score
Daiv    18      男      99.8
('name', 'Daiv')        ('age', 18)     ('sex', '男')   ('score', 99.8)