Python 学习 第16篇:数据类型(字典)

系统 1079 0

字典是键/值对构成的集合,字典通过大括号来创建,字典的键是字符串,而值可以是任何数据对象。

字典有两个重要的特征:

  • 字典是无序的,字典项没有特定的顺序,只能通过键来获取值;
  • 字典是可变的,支持原处修改键的值;
  • 字典是作为散列表来实现的,可增长,搜索非常快速;
  • 和列表一样,字典存储的是对象的引用,不是拷贝。

创建字典

创建空的字典:

            >>> d={}
          

创建包含两个项目的字典:

            >>> d={'name':'vic','age':28}
          

创建包含嵌套类型的字典:

            >>> d={'student':{'name':'vic','age':28}}
          

通过dict函数来创建字典:

            >>> d=dict(name='vic',age=28)
>>> d
{'name': 'vic', 'age': 28}
          

字典解析

使用字典解析,可以使用迭代器来生成字典:

            >>> d={x:x**2 for x in range(0,5)}
>>> d
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
          

引用字典的值

通过键来引用字典的值

            >>> d['name']
'vic'
>>> d['age']
28
          

或者使用dict.get(key, default)来获取键对应的值,其中default参数的作用是:当不存在键时,返回default作为该键的值:

            >>> d.get('name')
'vic'
>>> d.get('nam','jim')
'jim'
          

字典操作

字典的基本操作有:

  • len(dict):字典项的数量,或者字典键的数量
  • dict.keys():所有字典键的集合
  • dict.values():所有字典值得集合
  • dict.items():字典项(键/值对)的集合
  • list(dict.keys()):把所有字典键转换为列表
  • list(dict.values()):把所有字典键的值转换为列表
  • d[key],d.get(key):根据字典的键获取值
  • key in dict:检查该key是否是字典的键

1,添加/修改字典项

如果字典中不存在Key,那么添加该Key/Value对;如果存在该Key,那么修改该Key的值。

            >>> d=dict(name='vic',age=28)
>>> d['sex']='male'
{'name': 'vic', 'age': 28, 'sex': 'male'}
>>>
>>> d['sex']='man'
{'name': 'vic', 'age': 28, 'sex': 'man'}
          

2,删除字典项

dict.pop(key) 用于删除键为key的字典项

            >>> d.pop('sex')
'man'
>>> d
{'name': 'vic', 'age': 28}
          

或者使用 del dict[key]来删除键为key的字典项:

            >>> del d['sex']
          

3,合并字典

dict.update(dict2),把字典dict2合并到dict中

            >>> d.update({'tel':'120'})
{'name': 'vic', 'age': 28, 'tel': '120'}
          

4,复制字典

dict.copy()获得字典的一个深拷贝(deep copy)对象,深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存。

dict2=dict:获得字典的一个浅拷贝(shallow copy)对象,浅拷贝只是增加了一个指针指向已经存在的内存。

例如,深拷贝对象和原对象,指向不同的内存空间,修改任意一个字典,不会影响另外一个字典:

            >>> d=dict(name='vic',age=28)
>>> dc=d.copy()   # deep copy
>>> dc['tel']=120
>>> d
{'name': 'vic', 'age': 28}
>>> dc
{'name': 'vic', 'age': 28, 'tel': 120}
          

而浅拷贝对象和原对象指向相同的内存空间,修改任意一个字典,另一个字典也会修改:

            >>> d=dict(name='vic',age=28)
>>> sc=d     # shallow copy
>>> sc['tel']=110
>>> sc
{'name': 'vic', 'age': 28, 'tel': 110}
>>> d
{'name': 'vic', 'age': 28, 'tel': 110}
          

 

参考文档:


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论