python 数据类型 之 字典
python 3.6.5字典的特性和定义定义:{'key_1':vlaue_1,'key_2':value_2}1.键与值用冒号 : 分开2.项与项 用 , 分开
特性1.可以存放多个值,可以不唯一,可以修改2.key-value 结构3.key必须可hash,且必须唯一,不可变类型4.无序的
字典的创建和常见操作以下是几种:创建字典的操作dic={}dic['add1']='value1'dic['add2']='value2'
dict_name={'yan':'xia','ting':'yu'}dict_name=dict(yan='xia',ting='yu')#{'yan': 'xia', 'ting': 'yu'}# dict_name=dict({'yan':'xia','ting':'yu'})#{'yan': 'xia', 'ting': 'yu'}# dict_name={k+1:v for k,v in enumerate(range(1,10))}#字典推到自#{1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}
# dict_name={}.fromkeys(['key1','key2'],100)# {'key1': 100, 'key2': 100}#默认值是100# dict_name={}.fromkeys(['key1','key2'],[])#默认值是空list# {'key1': [], 'key2': []}print(dict_name)
#使用zip生成字典(强制类型转换)list_1=[i for i in range(1,5)]list_2=[i for i in range(6,10)]dict_3=zip(list_1,list_2)#type:class 'zip'dic=dict(dict_3)print(dic)#{1: 6, 2: 7, 3: 8, 4: 9}
dict.keys()# 返回包含所有键的列表dict.values()# #返回包含所有值的列表dict.items()# #返回包含所有键-值的元组
dict_list={k:v for k,v in enumerate(range(1,10))}print(dict_list.items())>>:dict_items([(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9)])
#新增:dic={'yanxia':'tianyu'}dic.setdefault('天','空')#假如字典中不存在键 则将后面的值赋值给键dic['add']='value'dic.update(name='yanxiatingyu')dic.update({'name_2':'yanxitingyu'})
#删除#dic.pop('add')#返回值,并且删除键值对 key-value,键不存在 报错#del dic['add']#dic.clear()#>>:{}删除所有 键-值 dic =空字典。
#修改值dic['add']='飞行'dic.update(name='yanxiatingyu')dic.update({'name_2':'yanxitingyu'})#print(dic)
#查看dic['add']dic.get('add',default='这是默认值')#假如add 不存在 就返回 后面default里面的值print(dic.__getitem__('add'))
长度len(dic)
字典的遍历 dic,dic.keys(),dic.values(),dic.items()
sample:for k,v in dic.items(): print('%s %s'%(k,v))
D.clear() #移除D中的所有项 D.copy() #返回D的副本 D.fromkeys(seq[,val]) #返回从seq中获得的键和被设置为val的值的字典。可做类方法调用 D.get(key[,default]) #如果D[key]存在,将其返回;否则返回给定的默认值None D.has_key(key) #检查D是否有给定键key D.items() #返回表示D项的(键,值)对列表 D.keys() #返回D键的列表 D.pop(key[,d]) #移除并且返回对应给定键key或给定的默认值D的值 D.popitem() #从D中移除任意一项,并将其作为(键,值)对返回 D.setdefault(key[,default]) #如果D[key]存在则将其返回;否则返回默认值None D.update(other) #将other中的每一项加入到D中。 D.values() #返回D中值的列表
python 2.x
iterkeys()iteritems()itervalues()单纯的取值效率上比keys()items()values()这三种方法效率要高
dic={'name':'this is test'}import time#效率测试
dic={'name':'this is test'}import time#效率测试time_start=time.time()for i in range(0,10000): dic.__getitem__('name')end_start=time.time()
time_start1=time.time()for i in range(0, 10000): dic.get('name')end_start1=time.time()
time_start2=time.time()for i in range(0, 10000): dic['name']end_start2=time.time()print()print((end_start-time_start))print((end_start1-time_start1))print((end_start2-time_start2))1 # 0.0020000934600830082 # 0.0030000209808349613 # 0.0009999275207519531测试了10次第三种取值方法基本上时间都是最小的第2种往往是最大的,第3种次之不过笔者有点懵逼,__getitem__()不是底层实现吗?为什么反而没有dict['key_name']取值速度快呢?dic['key_name']背后就是dic.__getitem__()
仿 编译型语言switch语句 多分支选择
def taskForSunday(): print("今天休息")def taskForRest(): print("今天休息")def taskForChinese(): print("今天上语文课")def taskForMath(): print("今天上数学课")def taskForEnglish(): print("今天上英语课")def taskForDefault(): print("输入错误啦。。。。")switch = {"Sunday": taskForRest, "Monday": taskForChinese, "Tuesday": taskForMath, "Wednesday": taskForEnglish, "Tursday": taskForEnglish, "Friday": taskForEnglish, "Saturday": taskForRest }
day='sfds'switch.get(day,taskForDefault)()
class Switch: switch = None
@classmethod def switch(cls, day): switchDic = {"Sunday": cls.casetaskForRest, "Monday": cls.casetaskForChinese, "Tuesday": cls.casetaskForMath, "Wednesday": cls.casetaskForEnglish, "Tursday": cls.casetaskForEnglish, "Friday": cls.casetaskForEnglish, "Saturday": cls.casetaskForRest } cls.switch = switchDic.get(day, cls.casetaskForDefault)() return cls.switch
@staticmethod def casetaskForSunday(): print("今天休息")
@staticmethod def casetaskForRest(): print("今天休息")
@staticmethod def casetaskForChinese(): print("今天上语文课")
@staticmethod def casetaskForMath(): print("今天上数学课")
@staticmethod def casetaskForEnglish(): print("今天上英语课")
@staticmethod def casetaskForDefault(): print("输入错误啦。。。。")
Switch.switch('Sunday')
python 数据类型 之 字典的更多相关文章
- python数据类型:字典Dictionary
python数据类型:字典Dictionary 字典是一种可变容器模型,可以存储任意类型对象 键是唯一的,但是值不需要唯一 值可以取任何数据类型,但是键必须是不可变的,如字符串,数字,元组 创建字典: ...
- Python数据类型-6 字典
字典 Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度.但它是无序的,包含的元素个数不限, ...
- Python数据类型(字典和集合)
1.5 Dictionary(字典) 在Python中,字典用放在花括号{}中一系列键-值对表示.键和值之间用冒号分隔,键-值对之间用逗号分隔. 在字典中,你想存储多少个键-值对都可以.每个键都与一个 ...
- python 数据类型三 (字典)
一.字典的介绍 字典(dict)是python中唯一的一个映射类型,它是以{}括起来的键值对组成,在dict中key是唯一的,在保存的时候,根据key来计算出一个内存地址,然后将key-value保存 ...
- Python数据类型-04.字典
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据 ------------ 完美的分割线 ------------- 1.字典引入 # 为何还要用字典?存放一个人的信 ...
- Python数据类型(字典)
文章内容参考了教程:http://www.runoob.com/python/python-basic-syntax.html#commentform Python 字典(Dictionary) 字典 ...
- python数据类型之字典操作
Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型.一.创建字典字典由key和value成对组成.基本语法如下: infos = {"name&q ...
- Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之字典类型(dict)
字典!在Python中字典是另一种可变容器模型,可以存储任意类型的对象.是Python存储数据类型的最高级(maybe). 特点:1. 字典的存储方式和其他类型数据略有不同,是通过键(key)和值(v ...
- Python学习(六) Python数据类型:字典(重要)
字典dict: 字典其实就相当于java里面的Map,用来存储键值对的.其中存储的数据时无序的. 假如有这样的数据: t1=['name','age','sex'] t2=['tom',30,'mal ...
随机推荐
- Winform自定义控件实例
本文转自http://www.cnblogs.com/hahacjh/archive/2010/04/29/1724125.html 写在前面: .Net已经成为许多软件公司的选择,而.Net自定义W ...
- LISTVIEW显示JPEG缩略图
http://www.ctsys.cn/files/SHOW_FILES.ASPX?ID=22 许多的JPEG图片浏览器(如由我设计的<JPEG浏览缩放器>),都可以将JPEG缩略图放置到 ...
- 传输层——UDP报文头介绍
16位源端口 16位目的端口 16位总长度 16位校验和 数据 源端口:长度为16位,2个字节. 目的端口:长度为16位,2个字节. 总长度:长度为16位,2个字节,表示 UDP包头长度 和 数据长度 ...
- C# 指定平台编译项目
如CefSharp就需要指定平台,项目为Any CPU时,无法编译,总会提示出错. 如: CefSharp.Common contains unmanaged resoures, set your p ...
- idea 这样 会快点
最近使用IDEA来开发JAVA应用,对IDEA的界面很有爱,但是缺受不了它的运行速度.每次运行都要编译,所以就有了这边文章 总感觉IDEA的编译速度比eclipse慢,eclipse每次保存都自动 ...
- GO注释
1.GO资源简介 由于生物系统的惊人复杂性和需要分析的数据集的不断增加,生物医学研究越来越依赖于以可计算的形式存储的知识.基因本体论(GO)项目为基因功能和基因产物的可计算知识提供了目前最全面的资源. ...
- 2.7、CDH 搭建Hadoop在安装(使用向导设置群集)
步骤7:使用向导设置群集 完成“ 群集安装”向导后,“ 群集设置”向导将自动启动.以下部分将指导您完成向导的每个页面: 选择服务 分配角色 设置数据库 查看更改 首次运行命令 恭喜! 选择服务 “ 选 ...
- CSS同时选择器
[CSS同时选择器] 同一个div拥有多个class时,我们可以作多个class作为组合来选择对象.方法就是将多个.className直接连接在一起(中间不能有空格). <p class=&qu ...
- javascript 表格排序和表头浮动效果(扩展SortTable)
前段时间一个项目有大量页面用到表格排序和表头浮动的效果,在网上找了几个表格排序的js代码,最后选择了 Stuart Langridge的SortTable,在SortTable基础上做了些扩展,加上了 ...
- verilog task2
1.问题:串口的发送和接收 系统时钟50Mhz,波特率119200.系统时钟计数约2604个,才是一位数据的传输时间. 模拟接收的任务函数rx_data_task():LSB first task r ...