设为首页 加入收藏

TOP

python学习笔记-字典(一)
2018-11-15 00:08:26 】 浏览:205
Tags:python 学习 笔记 字典

 

·字典(dict)

笔记:

 

  • 字典(映射)成对出现,由键及其相应的值组成,键-值对称作项(item),字典是python中唯一内置映射类型。字典中的键必须是独一无二的。
  • python 2中进行拷贝需要调用copy模块;而在python 3 中可以直接使用浅拷贝copy(),当使用深拷贝deepcopy(),则需要调用copy模块。
  • 相比于检查列表是否包含指定的值,检查字典是否包含指定的键效率更高。

 

@ 创建一个字典


 使用-值对序列创建字典(键-值在元组中组成列表):

>>> item = [('name','jimmy'),('age','25'),('address','fujian')]
>>> x = dict(item)
>>> print(x)
{'name': 'jimmy', 'age': '25', 'address': 'fujian'}

 使用关键字创建字典:

>>> d = dict(name='jimmy',age=25)
>>> print(d)
{'name': 'jimmy', 'age': 25}

 

@ 字典的基本操作


 字典的基本操作与序列类似:

>>> x ={'name':'jimmy','age':'25','address':'fujian'}
>>> print(len(x))    #len():查询字典键-值对数 3
>>> print(x['name']) #x['']:查询name键的值
jimmy
>>> x['address'] = 'beijing' #x['']='value':替换address键对应的值
>>> print(x)
{'name': 'jimmy', 'age': '25', 'address': 'beijing'}
>>> del x['address']  #del x['']:删除字典中键为address的项 >>> print(x)
{'name': 'jimmy', 'age': '25'}  #检查字典中是否包含键为name的项(成员资格) >>> print('name' in x)
True

 

@ 字典的方法


fromkeys():创建一个新字典,其中包含指定的键,值默认为None

>>> x = dict.fromkeys([x for x in range(1,11)])  #创建10个项(键-值对) >>> print(x)
{1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None, 10: None}

 浅拷贝(copy):

>>> x ={'name':'jimmy','age':'25','address':['fujian','beijing']}
>>> y = x.copy()
>>> print("x的ID为:",id(x))
x的ID为: 2394409585904
>>> print("y的ID为:",id(y))
y的ID为: 2394409586120
>>> y['age'] = 20
>>> print(x)
{'name': 'jimmy', 'age': '25', 'address': ['fujian', 'beijing']}
>>> print(y)
{'name': 'jimmy', 'age': 20, 'address': ['fujian', 'beijing']}
#结论:x和y指向的内存地址不同,所以两个字典的值不会相互影响
>>> x['address'].remove('beijing') >>> print(x) {'name': 'jimmy', 'age': '25', 'address': ['fujian']} >>> print(y) {'name': 'jimmy', 'age': 20, 'address': ['fujian']}
#结论:删除x字典的beijing时,y字典的值也随着删除。
这是因为浅拷贝只复制了第一层数据,字典里存储的子列表,打印出来是子列表,
在内存里,字典里只是存储了子列表的内存地址,子列表在内存里是单独存储的。

深拷贝(deepcopy):需要导入copy模块

>>>from copy import deepcopy  #导入模块 >>> x ={'name':'jimmy','age':'25','address':['fujian','beijing']}
>>> y = deepcopy()
>>> print("x的ID为:",id(x))
x的ID为: 2394409585904
>>> print("y的ID为:",id(y))
y的ID为: 2394409586120
>>> y['age'] = 20
>>> print(x)
{'name': 'jimmy', 'age': '25', 'address': ['fujian', 'beijing']}
>>> print(y)
{'name': 'jimmy', 'age': 20, 'address': ['fujian', 'beijing']}
#结论:x和y指向的内存地址不同,所以两个字典的值不会相互影响
>>> x['address'].remove('beijing')
>>> print(x)
{'name': 'jimmy', 'age': '25', 'address': ['fujian']}
>>> print(y)
{'name': 'jimmy', 'age': 20, 'address': ['fujian', 'beijing']}
#结论:删除x字典的beijing时,y字典的值不会被删除。这是因为深复制把子列表也复制了一份

方法集合详解:

>>> x = {'name':'jimmy','age':'18','address':'Fujian','phone':'123456'}
>>> y = {'age':'100'}
>>> print(x.get('name','not found it'))     
jimmy  #get():查找x字典中name键的值,返回其键的值。它还提供默认值;x中没有name时,返回指定值not found it(没有指定则默认为None)
>>> print(x
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇第二十一天- 基本模块 下一篇python学习之旅(四)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目