字典:是python中唯一的映射类型,字典中每一项都是由键-值对组成的项。字典中没有索引,只有键和值。键的类型可以是整型,变量或字符串。

创建和访问字典:

 >>> dict1 = {'Lining':'Anything is possible', 'Nike':'Just do is', 'Adidas':'Impossible is nothing'}
>>> for i in dict1:
... print(i)
...
Lining
Adidas
Nike
>>> for i in dict1:
... print(dict1[i])
...
Anything is possible
Impossible is nothing
Just do is
>>> dict2 = {1:'one',2:'two',3:'three'}
>>> dict2[3]
'three'
>>> dict2[1]
'one'
>>> dict2[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 0
>>> dict3 = dict((('a',97),('b',98),('c',99)))
>>> dict3
{'c': 99, 'b': 98, 'a': 97}
>>> dict4 = dict(Jobs = 'stay hungry, stay foolish', Agan = 'run,run,run')
>>> dict4
{'Agan': 'run,run,run', 'Jobs': 'stay hungry, stay foolish'}

通过键可以访问和修改对应的值,若对一个不存在的键进行赋值,会创建一个新项。

 >>> dict1
{'Lining': 'Anything is possible', 'Adidas': 'Impossible is nothing', 'Nike': 'Just do is'}
>>> dict1['Lining'] = 'nothing is nothing'
>>> dict1
{'Lining': 'nothing is nothing', 'Adidas': 'Impossible is nothing', 'Nike': 'Just do is'}
>>> dict1['nothing'] = 'nothing is nothing'
>>> dict1
{'Lining': 'nothing is nothing', 'Adidas': 'Impossible is nothing', 'Nike': 'Just do is', 'nothing': 'nothing is nothing'}

fromkeys()方法

dict.fromkeys(s[, v])  用s中的值作为键,v作为对应的值创建一个新的字典。

 >>> dict1 = {}
>>> dict1
{}
>>> dict1.fromkeys([1,2,3],(1,2,3))
{1: (1, 2, 3), 2: (1, 2, 3), 3: (1, 2, 3)}
>>> dict1.fromkeys([1,2,3],'number')
{1: 'number', 2: 'number', 3: 'number'}

keys() 返回字典键的引用

values() 返回字典的值的引用

items() 返回对应项的引用

 >>> dict1 = dict1.fromkeys(range(32), '赞')
>>> dict1
{0: '赞', 1: '赞', 2: '赞', 3: '赞', 4: '赞', 5: '赞', 6: '赞', 7: '赞', 8: '赞', 9: '赞', 10: '赞', 11: '赞', 12: '赞', 13: '赞', 14: '赞', 15: '赞', 16: '赞', 17: '赞', 18: '赞', 19: '赞', 20: '赞', 21: '赞', 22: '赞', 23: '赞', 24: '赞', 25: '赞', 26: '赞', 27: '赞', 28: '赞', 29: '赞', 30: '赞', 31: '赞'}
>>> for each in dict1.keys():
... print(each, end = ' ')
...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>>
>>> for each in dict1.values():
... print(each, end = ' ')
...
赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 赞 >>>
>>> for each in dict1.items():
... print(each, end = ' ')
...
(0, '赞') (1, '赞') (2, '赞') (3, '赞') (4, '赞') (5, '赞') (6, '赞') (7, '赞') (8, '赞') (9, '赞') (10, '赞') (11, '赞') (12, '赞') (13, '赞') (14, '赞') (15, '赞') (16, '赞') (17, '赞') (18, '赞') (19, '赞') (20, '赞') (21, '赞') (22, '赞') (23, '赞') (24, '赞') (25, '赞') (26, '赞') (27, '赞') (28, '赞') (29, '赞') (30, '赞') (31, '赞') >>>
>>> dict1.keys()
dict_keys([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31])
>>> dict1.values()
dict_values(['赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞'])
>>> dict1.items()
dict_items([(0, '赞'), (1, '赞'), (2, '赞'), (3, '赞'), (4, '赞'), (5, '赞'), (6, '赞'), (7, '赞'), (8, '赞'), (9, '赞'), (10, '赞'), (11, '赞'), (12, '赞'), (13, '赞'), (14, '赞'), (15, '赞'), (16, '赞'), (17, '赞'), (18, '赞'), (19, '赞'), (20, '赞'), (21, '赞'), (22, '赞'), (23, '赞'), (24, '赞'), (25, '赞'), (26, '赞'), (27, '赞'), (28, '赞'), (29, '赞'), (30, '赞'), (31, '赞')])
>>>

使用不存在的键访问一个字典时,会引发一个KeyError异常。

>>> dict1[32]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 32

这时,可以使用get方法。

>>> dict1.get(32)
>>> dict1.get(32,'no exist')
'no exist'

可以通过成员关系操作符(in,not in)来判断一个键是否在字典中

>>> 31 in dict1
True
>>> 32 in dict2
False

字典的成员操作比序列更加高效,序列时通过不断迭代来判断的,而字典时基于hash的查找。

清空字典:clear()

>>> dict1
{0: '赞', 1: '赞', 2: '赞', 3: '赞', 4: '赞', 5: '赞', 6: '赞', 7: '赞', 8: '赞', 9: '赞', 10: '赞', 11: '赞', 12: '赞', 13: '赞', 14: '赞', 15: '赞', 16: '赞', 17: '赞', 18: '赞', 19: '赞', 20: '赞', 21: '赞', 22: '赞', 23: '赞', 24: '赞', 25: '赞', 26: '赞', 27: '赞', 28: '赞', 29: '赞', 30: '赞', 31: '赞'}
>>> dict2 = dict1
>>> dict1 = {}
>>> dict1
{}
>>> dict2
{0: '赞', 1: '赞', 2: '赞', 3: '赞', 4: '赞', 5: '赞', 6: '赞', 7: '赞', 8: '赞', 9: '赞', 10: '赞', 11: '赞', 12: '赞', 13: '赞', 14: '赞', 15: '赞', 16: '赞', 17: '赞', 18: '赞', 19: '赞', 20: '赞', 21: '赞', 22: '赞', 23: '赞', 24: '赞', 25: '赞', 26: '赞', 27: '赞', 28: '赞', 29: '赞', 30: '赞', 31: '赞'}
>>> dict1 = dict2
>>> dict1.clear()
>>> dict1
{}
>>> dict2
{}

字典拷贝:copy()

  这是浅拷贝,和直接赋值不同。浅拷贝,深拷贝都是对一个对象的浅层或深层的拷贝,但是,直接赋值则只是多了一个别名。

>>> a = {1:'one',2:'two',3:'three'}
>>> b = a.copy()
>>> c = a

  a,c是同一个对象的两个不同的名字,修改其中任意一个都会是另一个的值发生改变,因为本质上修改对方和修改自己是一样的。而b则是另一个不同的对象,对a或c作任何改变都不会印象b,反过来亦是如此。

pop() 给出键,弹出值

popitem() 随机弹出一个项

>>> a.pop(2)
'two'
>>> c
{1: 'one', 3: 'three'}
>>> c.popitem()
(1, 'one')
>>> b
{1: 'one', 2: 'two', 3: 'three'}

setdefault() 和get类似,但找不到键时进行添加

>>> a.setdefault('white')
>>> a
{'white': None, 3: 'three'}
>>> a.setdefault('white',5)
>>> a
{'white': None, 3: 'three'}
>>> a.setdefault('black',5)
5
>>> a
{'white': None, 'black': 5, 3: 'three'}
>>> a.setdefault('black',5)
5
>>> a.setdefault('black',6)
5
>>> a
{'white': None, 'black': 5, 3: 'three'}

update() 利用一个字典或映射关系去更新一个字典

>>> a
{'white': None, 'black': 5, 3: 'three'}
>>> b
{1: 'one', 2: 'two', 3: 'three'}
>>> a.update(b)
>>> a
{1: 'one', 2: 'two', 3: 'three', 'white': None, 'black': 5}

python学习笔记(十四)之字典的更多相关文章

  1. python学习第十四天字典的del(),pop().popitem(),clear()删除方法

    字典的每个键值 key=>value 数据类型,字典的key是唯一的,Value可以一样 names={'玖乐公司网址':‘www.96net.com.cn’,"电池网":' ...

  2. python 学习笔记十四 jQuery案例详解(进阶篇)

    1.选择器和筛选器 案例1 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  3. python学习笔记(十 四)、web.py

    使用web.py 通过python进行网页的编写,下面我们来简单了解一哈web.py 的使用 1 url处理 使用特定的url结构来解析我们发送的请求.如下面所示: urls = ( '/login' ...

  4. python学习笔记十四:wxPython Demo

    一.简介 wxPython是Python语言的一套优秀的GUI图形库,允许Python程序员很方便的创建完整的.功能键全的GUI用户界面. wxPython是作为优秀的跨平台GUI库wxWidgets ...

  5. python 学习笔记(十四)有依赖关系的接口开发

    接口开发中存在很多有依赖关系的接口,例如:BBS中发帖的时候就需要进行校验用户是否登录,那么此时发帖的接口就与用户登录接口有依赖关系.在发帖时就需要先获取用户的session,与当前登录用户进行校验对 ...

  6. python学习笔记(十四): unittest

    Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 在说unittest之前,先说几个概念: TestC ...

  7. python学习笔记(十四)python实现发邮件

    import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart u ...

  8. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  9. python学习笔记(一)元组,序列,字典

    python学习笔记(一)元组,序列,字典

  10. Python学习笔记(四)

    Python学习笔记(四) 作业讲解 编码和解码 1. 作业讲解 重复代码瘦身 # 定义地图 nav = {'省略'} # 现在所处的层 current_layer = nav # 记录你去过的地方 ...

随机推荐

  1. Storm事务Topology的接口介绍

      ITransactionalSpout 基本事务Topology的Spout接口,内含两部分接口:协调Spout接口以及消息发送Blot接口. TransactionalSpoutBatchExe ...

  2. 读着读着《构建之法》(Build To Win) 越精神的白雪儿的思考

    哲学家的宗旨是:我思,故我在 科学家的宗旨是:我发现,故我在 工程师的宗旨是:我构建,故我在 ——<工程学--无尽的前沿> 序言:珍惜角色“人”,注重实践“物” <构建之法>, ...

  3. 个人项目----词频统计WEB(部分功能)

    需求分析 1.使用web上传txt文件,对上传的txt进行词频统计. 2.将统计后的结果输出到web页面,力求界面优美. 3.在界面上展示所给url的文章词频统计,力求界面优美. 3.将每个单词同四. ...

  4. ant 安装及基础教程 !

    这篇文章主要介绍了ant使用指南详细入门教程,本文详细的讲解了安装.验证安装.使用方法.使用实例.ant命令等内容,需要的朋友可以参考下   一.概述 ant 是一个将软件编译.测试.部署等步骤联系在 ...

  5. 78W的数据使用forall 进行批量转移;

    create or replace procedure test_forall(CURRENTPAGE number ) as .--CURRENTPAGE number :=2 ; .PAGESIZ ...

  6. 【转】关于cgi、FastCGI、php-fpm、php-cgi

    转自 知乎 的 一个回答 首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者. web server(比如说nginx)只是内容的分发者.比如 ...

  7. PHP创建对象的几种形式

    创建对象的几种形式 class  C1{ var  $p1 = 1; //定义一个属性: } 形式1: $o1 = new C1(); //通过一个类,去new出一个对象 形式2: $o2 = new ...

  8. eclipse错误:Access restriction: The type 'BASE64Decoder' is not API

    Access restriction: The type ‘BASE64Decoder’ is not API (restriction on required library ‘D:\java\jd ...

  9. 【uoj#175】新年的网警 结论题+Hash

    题目描述 给出一张 $n$ 个点 $m$ 条边的无向连通图,每条边的边权为1.对于每个点 $i$ ,问是否存在另一个点 $j$ ,使得对于任意一个不为 $i$ 或 $j$ 的点 $k$ ,$i$ 到 ...

  10. BZOJ4999 This Problem Is Too Simple!(树上差分+dfs序+树状数组)

    对每个权值分别考虑.则只有单点加路径求和的操作.树上差分转化为求到根的路径和,子树加即可.再差分后bit即可.注意树上差分中根的父亲是0,已经忘了是第几次因为这个挂了. #include<ios ...