Python从放弃到入门——字典dict

字典简介

字典也是Python内置数据结构之一。
主要特点有:
1.通过键查找值,而不是索引。
2.字典的元素是无序的。
3.字典的键必须是不可变对象,且不可重复。
这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。
4.字典可以动态伸缩。
5.与列表相比,具有极快的查找速度,但是会占用大量的内存,是用空间换取时间。

字典常用的操作如下表所示
在这里插入图片描述
下面让我们通过实例来了解字典的使用与特点。

创建

字典的创建方式有以下3种
1.花括号{ }
2.内置函数dict
dict内传入的参数可以是{ }组成的字典,可以是关键字参数,还可以是内嵌key,value元组的字典
3.使用函数fromkeys
该方法所有value的默认值都为None,也可以通过传入参数指定value。一般用于字典的初始化。

>>>print({'name':'Bob','age':40})

>>>print(dict({'name':'Bob','age':40}))
>>>print(dict(name='Bob',age=40))
>>>print(dict([('name','Bob'),('age',40)]))
#以上代码输出相同
{'name': 'Bob', 'age': 40}

>>>print(dict.fromkeys(['name','age']))
>>>print(dict.fromkeys(['name','age'],'N/A'))
{'name': None, 'age': None}
{'name': 'N/A', 'age': 'N/A'}

字典的查找

字典中根据指定的key 查找value的方式有两种:
1.使用中括号。如果key不存在,则抛出KeyError。

>>>d={'name':'Bob','age':40}
>>>print(d['name'])
Bob

>>>print(d['gender']) 
KeyError: 'gender'

2.调用方法get
通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value。
使用get与[ ]语法最大的区别就是 key 不存在是不会抛KeyError。当不希望key不存在时程序停止运行,可以用get( )方法。

>>>print(d.get('name'))
>>>print(d.get('gender'))
>>>print(d.get('gender','male'))
Bob
None
male

此外,同列表一样,可以使用运算符in检查字典中是否存在指定的key。

字典的修改

字典的修改准确的说是修改指定key对应的value,方法有两种:
1.直接为key赋予一个新的value,一次只修改1个value

>>>d={'name':'Bob','age':40,'gender':'male'}
>>>d['age']=18
>>>print(d)
{'name': 'Bob', 'age': 18, 'gender': 'male'}

2.调用方法update,一次修改多个value
其中传入的参数同dict一样,可以是{ }组成的字典,可以是关键字参数,还可以是内嵌key,value元组的字典

>>>d={'name':'Bob','age':40,'gender':'male'}
#以下3种方式等价
>>>d.update({'name':'Mike','age':18})
>>>d.update([('name','Mike'),('age',18)])
>>>d.update(name='Mike',age=18)
>>>print(d)
{'name': 'Mike', 'age': 18, 'gender': 'male'}

字典的增加

同修改一样,字典添加key-value对的方式也有两种:
1.直接为key赋予一个新的value,一次只修改1个value
2.调用方法update,一次修改多个value

区别在于增加时字典中不存在指定的key,这里不再举例。

字典的删除

字典的删除方式有4种
1.调用方法pop,一次删除一个key-value对
2.使用del语句
3.调用方法popitem,一次删除任意的key-value对
4.调用方法clear清空字典

>>>d={'name':'Bob','age':40,'gender':'male'}
>>>print(d.pop('age'))
>>>print(d)
40
{'name': 'Bob', 'gender': 'male'}

>>>d={'name':'Bob','age':40,'gender':'male'}
>>>del d['age']
>>>print(d)
{'name': 'Bob', 'gender': 'male'}

>>>d={'name':'Bob','age':40,'gender':'male'}
>>>print(d.popitem())
>>>print(d)
('gender', 'male')
{'name': 'Bob', 'age': 40}

>>>d={'name':'Bob','age':40,'gender':'male'}
>>>d.clear()
>>>print(d)
{}

setdefault

为了确保字典中指定的key总是存在的,可以调用方法setdefault。
如存在指定的key,则返回指定的value,原字典不发生变化。
如不存在指定的key,则返回指定的默认value,原字典添加一个key-value对。

>>>d={'name':'Bob'}
>>>print(d.setdefault('name','defaultName'))
>>>print(d)
Bob
{'name': 'Bob'}

>>>d={}
>>>print(d.setdefault('name','defaultName'))
>>>print(d)
defaultName
{'name': 'defaultName'}

tips:
setdefault用法和字典的get方法类似,但是比 get 更强大,
get 方法设置的默认值不会改变原字典, 而setdefault设置的默认值会改变原字典的值。

>>> d = {"x":3}
>>> y = d.get("y", 4)
>>> y
4
>>> d
{'x': 3}
>>> y = d.setdefault("y", 4)
>>> y
4
>>> d
{'y': 4, 'x': 3}

字典的视图

字典的视图有3个方法
1.keys:返回字典所有key的视图
2.values:返回字典所有value的视图
3.items:返回字典所有key-value对的视图

d={'name':'Bob','age':40}
keys=d.keys()
print(keys)
print(list(keys))

values=d.values()
print(values)
print(list(values))

items=d.items()
print(items)
print(list(items))

#以上代码输出为
dict_keys(['name', 'age'])
['name', 'age']
dict_values(['Bob', 40])
['Bob', 40]
dict_items([('name', 'Bob'), ('age', 40)])
[('name', 'Bob'), ('age', 40)]

注意:视图会随字典动态改变。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值