Python 之 字典 dict 的深入浅出

本文深入介绍了Python字典dict的概念、初始化、key要求及查找效率。详细讲解了dict的元素访问、增加、修改和删除操作,重点探讨了字典的遍历方式及其注意事项,包括遍历key、value、kv对,以及遍历中的动态视图和错误做法。同时,文章还对比介绍了defaultdict和OrderedDict,前者在key不存在时能自动生成value,后者则保持了元素插入的顺序。
摘要由CSDN通过智能技术生成

1、字典 dict 概念介绍及初始化

1.1 概念介绍

  • key-value 键值对的数据的集合
  • 可变的、无序的、并且 key 不重复

1.2 初始化

1、 d = dict() 
2、 d = {
   }
3dict(**kwargs) 使用 name = value 对初始化一个字典
4dict(iterable, **kwargs) 使用可迭代对象和 name = value 对构造字典
	不过可迭代对象的元素必须是一个二元结构
5dict(mapping, **kwargs) 使用一个字典构造另外一个字典
6、类方法 dict.fromkeys(iterable, value)
d1 = dict.fromkeys(range(5))
d2 = dict.fromkeys(range(5), 5)
d3 = {
   'a':10, 'b':20, 'c':None, 'd':[1, 2, 3], 'e':('1', 'a')}
d4 = dict(a=10, b=20, c=30)
d5 = dict(((1, 'a'), (2, 'b')))

for i in [d1, d2, d3, d4, d5]:
    print(i, type(i))
{
   0: None, 1: None, 2: None, 3: None, 4: None} <class 'dict'>
{
   0: 5, 1: 5, 2: 5, 3: 5, 4: 5} <class 'dict'>
{
   'a': 10, 'b': 20, 'c': None, 'd': [1, 2, 3], 'e': ('1', 'a')} <class 'dict'>
{
   'a': 10, 'b': 20, 'c': 30} <class 'dict'>
{
   1: 'a', 2: 'b'} <class 'dict'>

1.2.1 初始化注意事项

  • dict 输入的参数必须是一个可迭代对象,且元素必须是一个二元结构
dict1 = dict([(1, 2), ('a', 10), ('c', 100, 200)])
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-1-c69bd69f2aa3> in <module>
----> 1 dict1 = dict([(1, 2), ('a', 10), ('c', 100, 200)])

ValueError: dictionary update sequence element #2 has length 3; 2 is required
  • 使用 set 作为可迭代参数时,一定要注意,因为 set 是无序的
dict2 = dict(([1, 2], ['a', [100]], ('abc', 100), {
   'dfg', 'qwe'}))
print(dict2)
{
   1: 2, 'a': [100], 'abc': 100, 'qwe': 'dfg'}

1.3 字典 key 说明

  • key 的要求和 set 的元素要求一致
  • set 的元素可以就是看做 key, set 可以看做是 dict 的简化版
  • hashable 可哈希才可以作为 key, 可以使用 hash() 测试

1.4 字典查找效率

在这里插入图片描述

2、字典 dict 操作

2.1 字典 dict 元素访问

1、d[key]
	1.1 返回 key 对应的值 value
	1.2 key 不存在,抛出 KeyError 异常
	
2、get(key [,default])
	1.1 返回 key 对应的值 value
	1.2 key 不存在,返回缺省值,如果没有缺省值,就返回None
	
3、setdefault(key [,default])
	1.1 返回 key 对应的值 value
	1.2 key 不存在,添加 kv 对,value 设置为缺省值,并返回缺省值,如果没有缺省值,则为 None
d1 = dict.fromkeys(range(5), 9)
print(1, d1)
print(2, d1.get(1), d1.get(5, 'abc'), d1.get(5))
print(3, d1[0])
print(4, d1[5])
1 {
   0: 9, 1: 9, 2: 9, 3: 9, 4: 9}
2 9 abc None
3 9
-----------------------------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值