四、字典

1.字典的性质

字典是python中唯一映射类型,是一种工厂函数;字符串、列表、元组都是序列类型。使用key来访问字典里的内容而不是索引值。

字典包含两个要素:键(key)和值(value),他们是成对出现的,用大括号括起来,多对存在时用逗号隔开。

# dict()是一个工厂函数,调用后会生成该类型的实例
>>> a = dict()
>>> type(a)
<class 'dict'>

2.字典的增删改查

  • 字典的创建

可以用dict()直接创建字典(注意不是花括号),如

>>> dict1 = dict((('F', 70),('i', 105),('s', 115),('h', 104),('C', 67)))
>>> dict1
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67}

创建一个空字典

>>> dict1 = dict()
>>> dict1
{}
  • 字典的修改

改变字典中的某个值:dict2[key] = 'value',插入的方法类似

dict2 = dict(key1 = value1, key2 = value2)
最后的形式为:
dict2 = {key2:value2,key1:value}
# python的dict是无序的,注意这里的key不加引号
  • 从字典中删除元素

>>> dict3 = dict((('Liu',123),('Li',456)))
>>> del dict3['Liu']
>>> dict3
{'Li': 456}
  • 遍历字典

>>> dict3 = dict((('Liu',123),('Li',456)))
>>> for key, value in dict3.items():
	print(key, value)

	
Liu 123
Li 456

3.字典的内置方法

3.1方法表格

方法含义

fromkeys()

用于创建并返回一个新的字典

keys()

返回键
value()返回值
items()返回键值对(也就是项)
get(key,'value')对应键的值不存在的话返回一个None,这样程序就不会报错
key in dict1 or not in 如果不知道一个键是否存在字典中,可以使用成员资格操作符,查找的是而不是
clear()清空字典,不建议使用直接赋空值的方法:dict()={}
copy()浅拷贝
pop()给定键弹出相应值
popitem()给定键弹出相应项
setdefault()

找不到给定键对应的值的话会自动在字典里创建一个基于该键的项(区别于get()方法的结果)

update()根据一个字典或映射关系去更新另一个字典,(a.update(b):用b来更新a)

3.2 一些方法实例

  • dict1.fromkeys()

用于创建并返回一个新的字典(并没有修改dict1,而是在它的基础上返回一个新的,可用于快速重置字典的value)。

>>> dict1 = {}
>>> dict1.fromkeys((1,2,3))
{1: None, 2: None, 3: None}
>>> dict2 = {}
>>> dict2.fromkeys((1,2,3),"Number")
{1: 'Number', 2: 'Number', 3: 'Number'}
>>> dict3 = {}
>>> dict3.fromkeys((1,2,3),("one","two","three"))
{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}

fromkeys()方法是直接创建一个新的字典,不要试图使用它来修改一个原有的字典,区别于(dict2 = dict1)

>>> dict1 = {}
>>> dict1.fromkeys((1,2,3))
{1: None, 2: None, 3: None}
>>> dict1
{} # dict1 并没有发生改变
  • dict1.keys()

>>> dict1 = {(1,2,3):'number'}
>>> for eachKey in dict1.keys():
	print(eachKey)

	
(1, 2, 3)
  • dict1.copy() 浅拷贝

>>> a = {1:'one', 2:'two', 3:'three'}
>>> b = a.copy()
>>> c = a
>>> c[4] = 'four'
>>> c
{1: 'one', 2: 'two', 3: 'three', 4: 'four'}
>>> a
{1: 'one', 2: 'two', 3: 'three', 4: 'four'} # a对c赋值,对c的修改直接影响到a
>>> b
{1: 'one', 2: 'two', 3: 'three'} # 浅拷贝不会影响到原字典
  • dict1.update()

>>> a = {1:'one', 2:'two', 3:'three', 4:'four'}
>>> b = {'小白':'狗'}
>>> a.update(b)
>>> a
{1: 'one', 2: 'two', 3: 'three', 4: 'four', '小白': '狗'}

4.补充

(1)在字典中检查键(key)是否存在比在序列中检查指定元素是否存在更加高效,因为字典的原理是使用哈希算法存储,一步到位,不需要使用查找算法进行匹配,因此时间复杂度是O(0),效率非常高。

(2)python对键的要求相对更严格,要求它们必须是可哈希(Hash)的对象,不能是可变的类型(包括变量、列表、字典本身等)。但是python对值是没有任何限制的,它们可以是任意的python对象。

(3)收集参数时用**表示将参数们打包成字典的形式,之前介绍过以元组的形式组合。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洛江清

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值