字典

字典是“键值对”的无序可变序列,字典中的每个元素都是一个“键值对”,包含:“键 对象”和“值对象”。可以通过“键对象”实现快速获取、删除、更新对应的“值对象”。 列表中我们通过“下标数字”找到对应的对象。字典中通过“键对象”找到对应的“值 对象”。“键”是任意的不可变数据,比如:整数、浮点数、字符串、元组。但是:列表、 字典、集合这些可变对象,不能作为“键”。并且“键”不可重复。 “值”可以是任意的数据,并且可重复。
一个典型的字典的定义方式:
a = {‘name’:‘lxy’,‘age’:18,‘job’:‘student’}

字典的创建

1. 我们可以通过{}、dict()来创建字典对象。

>>> a = {'name':'lxy','age':18,'job':'student'} 
>>> b = dict('name':'lxy','age':18,'job':'student') 
>>> a = dict([('name':'lxy'),("age",18)]) 
>>> c = {} #空的字典对象 
>>> d = dict() #空的字典对象

2. 通过 zip()创建字典对象

>>> k = ['name','age','job'] 
>>> v = ['lxy',18,'student'] 
>>> d = dict(zip(k,v)) 
>>> d {'name': 'lxy', 'age': 18, 'job': 'student'}

3. 通过 fromkeys 创建值为空的字典

>>> a = dict.fromkeys(['name','age','job']) 
>>> a {'name': None, 'age': None, 'job': None}

字典元素的访问

为了测试各种访问方法,我们这里设定一个字典对象:
a = {‘name’:‘lxy’,‘age’:18,‘job’:‘student’}

  1. 通过 [键] 获得“值”。若键不存在,则抛出异常。
>>> a = {'name':'lxy','age':18,'job':'student'} 
>>> a['name'] 
'lxy' 
>>> a['age'] 
18
>>> a['sex'] 
>Traceback (most recent call last): File "<pyshell#374>", line 1, in <module>
 a['sex'] KeyError: 'sex' 
  1. 通过 get()方法获得“值”。推荐使用。优点是:指定键不存在,返回 None;也可以设 定指定键不存在时默认返回的对象。推荐使用 get()获取“值对象”。
 >>> a.get('name') 
'lxy' 
>>> a.get('sex')
>>> a.get('sex','一个男人') 
'一个男人' 
  1. 列出所有的键值对
>>> a.items() 
>dict_items([('name', 'lxy'), ('age', 18), ('job', 'student')]) 
  1. 列出所有的键,列出所有的值
>>> a.keys() 
dict_keys(['name', 'age', 'job']) 
>>> a.values() 
dict_values(['lxy', 18, 'student'])
  1. len() 键值对的个数
  2. 检测一个“键”是否在字典中
>>> a = {"name":"lxy","age":18} 
>>> "name" in a 
True 

字典元素添加、修改、删除

  1. 给字典新增“键值对”。如果“键”已经存在,则覆盖旧的键值对;如果“键”不存在, 则新增“键值对”。
  2. 使用 update()将新字典中所有键值对全部添加到旧字典对象上。如果 key 有重复,则直 接覆盖。
  3. 字典中元素的删除,可以使用 del()方法;或者 clear()删除所有键值对;pop()删除指定 键值对,并返回对应的“值对象”;
  4. popitem() :随机删除和返回该键值对。字典是“无序可变序列”,因此没有第一个元 素、最后一个元素的概念;popitem 弹出随机的项,因为字典并没有"最后的元素"或者其 他有关顺序的概念。若想一个接一个地移除并处理项,这个方法就非常有效(因为不用首先获取键的列表)。

序列解包

序列解包可以用于元组、列表、字典。序列解包可以让我们方便的对多个变量赋值。
序列解包用于字典时,默认是对“键”进行操作; 如果需要对键值对操作,则需要使用 items();如果需要对“值”进行操作,则需要使用 values();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值