【Python-5】字典介绍

字典是另一种可变容器模型,且可存储任意类型对象。
字典形式 key-value。

5.1 创建字典

>>> info = {}
>>> info = dict()

5.2 初始化字典

>>> info = {"only_one" : 'python'}
>>> info = dict(only_one= 'python')       # 更优雅

虽然第二种方式看起来更合理,但是会引起不必要的bug
>>> key = 'python'
>>> info = {key, : 'best!!'}  
>>> info = {key : 'best!!'}  
>>> info 
{'python': 'best!!'}
>>> info = dict(key = 'best!!')
>>> info 
{'key': 'best!!'}

Python字典还有一种初始化方式,就是使用字典的fromkeys方法可以从列表中获取元素作为键
并用None或fromkeys方法的第二个参数初始化

>>> info = {}.fromkeys(['name', 'python'])
>>> info
{'blog': None, 'name': None}
>>> info = dict().fromkeys(['name', 'blog'])
>>> info
{'blog': None, 'name': None}
>>> info = dict().fromkeys(['name', 'blog'], 'linuxzen.com')
>>> info
{'blog': 'linuxzen.com', 'name': 'linuxzen.com'}

5.3 字典的基本操作

字典的基本行为在很多方面都类似于序列。

  • len(d) 返回字典 d 包含的项(键值对)数。
  • d[k] 返回与键 k 相关联的值。
  • d[k] = v 将值 v 关联到键 k 。
  • del d[k] 删除键为 k 的项。
  • k in d 检查字典 d 是否包含键为 k 的项。

虽然字典和列表有多个相同之处,但也有一些重要的不同之处。

  • 键的类型:字典中的键可以是整数,但并非必须是整数。字典中的键可以是任何不可变
    的类型,如浮点数(实数)、字符串或元组。
  • 自动添加:即便是字典中原本没有的键,也可以给它赋值,这将在字典中创建一个新项。
    然而,如果不使用 append 或其他类似的方法,就不能给列表中没有的元素赋值。
  • 成员资格:**表达式 key in dict (其中 dict 是一个字典)查找的是键而不是值,而表达式 value in list (其
    中 l 是一个列表)查找的是值而不是索引。 **这看似不太一致,但你习惯后就会觉得相当自
    然。毕竟如果字典包含指定的键,检查相应的值就很容易。

5.4 字典的方法

  • clear()

方法 clear 删除所有的字典项,这种操作是就地执行的(就像 list.sort 一样),因此什么都不返回(或者说返回 None )。

>>> x = {}
>>> y = x
>>> x['key'] = 'shu'
>>> x
{'key': 'shu'}
>>> y
{'key': 'shu'}
>>> x.clear()
>>> x
{}
>>> y
{}
# 上述场景,x和y同时执行一个字典,这个时候,使用clear(),x和y的值都会被清空。
-------------------------------------------------------------------------------------------------------------
>>> a = {}
>>> b = a
>>> a['key-1'] = 'qiang'
>>> a
{'key-1': 'qiang'}
>>> b
{'key-1': 'qiang'}
>>> a = {}
>>> a
{}
>>> b
{'key-1': 'qiang'}
# 上述场景a和b指向同一个字典,这个时候仅仅把 a = {},并不影响b的值。
  • copy()
    copy()是一种浅拷贝。下面的例子展示了,直接修改副本的数据,会导致原数据的值发生变化。
>>> x = {'name':'xuxing', 'body-info':['175', '65', '25']}         
>>> x
{'name': 'xuxing', 'body-info': ['175', '65', '25']}
>>> y = x.copy()
>>> y
{'name': 'xuxing', 'body-info': ['175', '65', '25']}
>>> y['name'] = 'niudun'
>>> x
{'name': 'xuxing', 'body-info': ['175', '65', '25']}
>>> y
{'name': 'niudun', 'body-info': ['175', '65', '25']}
>>> 
>>> y['body-info'].remove('65')      
>>> 
>>> x
{'name': 'xuxing', 'body-info': ['175', '25']}
>>> y
{'name': 'niudun', 'body-info': ['175', '25']}
>>> 

深拷贝deepcopy()

>>> from copy import deepcopy
>>> 
>>> x = {'name':'xuxing', 'body-info':['175', '65', '25']}  
>>> y = x.copy()
>>> z = deepcopy(y)
>>> x['body-info'].append('500') 
>>> x
{'name': 'xuxing', 'body-info': ['175', '65', '25',, '500']}
>>> y
{'name': 'xuxing', 'body-info': ['175', '65', '25', '500']}
>>> z
{'name': 'xuxing', 'body-info': ['175', '65', '25']}
>>> 
  • fromkeys()
    fromkeys 创建一个新字典,其中包含指定的键,且默认每个键对应的值都是 None ,也可以自定义。
>>> {}.fromkeys(['name', 'age'])   
{'name': None, 'age': None}
>>> dict.fromkeys(['name', 'age'])
{'name': None, 'age': None}
>>> dict.fromkeys(['name', 'age'], 'nice-value')             
{'name': 'nice-value', 'age': 'nice-value'}
>>> 
  • get()
    dict.get(key, default=None)
    返回指定键的值,如果值不在字典中返回default值
  • has_key()
    dict.has_key(key)
    如果键在字典dict里返回true,否则返回false
  • items()
    dict.items()
    以列表返回可遍历的(键, 值) 元组数组
  • pop()
    pop(key[,default])
    删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
  • popitem()
    随机返回并删除字典中的一对键和值.
  • dict.update(dict2)
    把字典dict2的键/值对更新到dict里。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值