python学习笔记(十四)之字典
字典:是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学习笔记(十四)之字典的更多相关文章
- python学习第十四天字典的del(),pop().popitem(),clear()删除方法
字典的每个键值 key=>value 数据类型,字典的key是唯一的,Value可以一样 names={'玖乐公司网址':‘www.96net.com.cn’,"电池网":' ...
- python 学习笔记十四 jQuery案例详解(进阶篇)
1.选择器和筛选器 案例1 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- python学习笔记(十 四)、web.py
使用web.py 通过python进行网页的编写,下面我们来简单了解一哈web.py 的使用 1 url处理 使用特定的url结构来解析我们发送的请求.如下面所示: urls = ( '/login' ...
- python学习笔记十四:wxPython Demo
一.简介 wxPython是Python语言的一套优秀的GUI图形库,允许Python程序员很方便的创建完整的.功能键全的GUI用户界面. wxPython是作为优秀的跨平台GUI库wxWidgets ...
- python 学习笔记(十四)有依赖关系的接口开发
接口开发中存在很多有依赖关系的接口,例如:BBS中发帖的时候就需要进行校验用户是否登录,那么此时发帖的接口就与用户登录接口有依赖关系.在发帖时就需要先获取用户的session,与当前登录用户进行校验对 ...
- python学习笔记(十四): unittest
Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 在说unittest之前,先说几个概念: TestC ...
- python学习笔记(十四)python实现发邮件
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart u ...
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- python学习笔记(一)元组,序列,字典
python学习笔记(一)元组,序列,字典
- Python学习笔记(四)
Python学习笔记(四) 作业讲解 编码和解码 1. 作业讲解 重复代码瘦身 # 定义地图 nav = {'省略'} # 现在所处的层 current_layer = nav # 记录你去过的地方 ...
随机推荐
- 在.net项目中使用Consul
1.创建.net core web程序并运行 2.在Consul中注册该服务 Consul支持两种服务注册的方式,一种是通过Consul的服务注册HTTP API,由服务自身在启动后调用API注册自己 ...
- yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。
CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1. 下载mysql的repo源 $ wget http://repo.mysql.com ...
- 软工网络15团队作业4——Alpha阶段敏捷冲刺-8
一.当天站立式会议照片: 二.项目进展 昨天已完成的工作: 服务器的完善,后端配置的修改. 明天计划完成的工作: 完善各个功能以及修改bug. 工作中遇到的困难: 服务器的语言编程困难,后端调试中不断 ...
- php判断是否https
function is_https() { if ( !empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'o ...
- 如何在java中实现跨线程的通讯
一般而言,如果没有干预的话,线程在启动之后会一直运行到结束,但有时候我们又需要很多线程来共同完成一个任务,这就牵扯到线程间的通讯. 如何让两个线程先后执行?Thread.join方法 private ...
- 大型Java web项目分布式架构演进-分布式部署
http://blog.csdn.net/binyao02123202/article/details/32340283/ 知乎相关文章https://www.zhihu.com/question/2 ...
- 更新 pip & setuptools
python -m pip install -U pip setuptools
- echarts tooltip 自定义formatter怎么设置颜色?
formatter: function(params) { var result = ''; params.forEach(function (item) { result += item.marke ...
- dom变成jquery对象 先获取dom对象 然后通过$()转换成jquery对象
dom变成jquery对象 先获取dom对象 然后通过$()转换成jquery对象
- asp.net core 登录身份认证(Cookie)
asp.net core 2最简单的登录功能 源代码在此 创建asp.net core Web Mvc项目 配置下选项 项目目录结构 在Models文件夹下新建两个实体类 public class T ...