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 数据类型 之 字典的更多相关文章

  1. python数据类型:字典Dictionary

    python数据类型:字典Dictionary 字典是一种可变容器模型,可以存储任意类型对象 键是唯一的,但是值不需要唯一 值可以取任何数据类型,但是键必须是不可变的,如字符串,数字,元组 创建字典: ...

  2. Python数据类型-6 字典

    字典 Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度.但它是无序的,包含的元素个数不限, ...

  3. Python数据类型(字典和集合)

    1.5 Dictionary(字典) 在Python中,字典用放在花括号{}中一系列键-值对表示.键和值之间用冒号分隔,键-值对之间用逗号分隔. 在字典中,你想存储多少个键-值对都可以.每个键都与一个 ...

  4. python 数据类型三 (字典)

    一.字典的介绍 字典(dict)是python中唯一的一个映射类型,它是以{}括起来的键值对组成,在dict中key是唯一的,在保存的时候,根据key来计算出一个内存地址,然后将key-value保存 ...

  5. Python数据类型-04.字典

    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据 ------------ 完美的分割线 ------------- 1.字典引入 # 为何还要用字典?存放一个人的信 ...

  6. Python数据类型(字典)

    文章内容参考了教程:http://www.runoob.com/python/python-basic-syntax.html#commentform Python 字典(Dictionary) 字典 ...

  7. python数据类型之字典操作

    Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型.一.创建字典字典由key和value成对组成.基本语法如下: infos = {"name&q ...

  8. Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之字典类型(dict)

    字典!在Python中字典是另一种可变容器模型,可以存储任意类型的对象.是Python存储数据类型的最高级(maybe). 特点:1. 字典的存储方式和其他类型数据略有不同,是通过键(key)和值(v ...

  9. Python学习(六) Python数据类型:字典(重要)

    字典dict: 字典其实就相当于java里面的Map,用来存储键值对的.其中存储的数据时无序的. 假如有这样的数据: t1=['name','age','sex'] t2=['tom',30,'mal ...

随机推荐

  1. JQUERY 简单易用的提示框插件

    业务开发过程中,为了避免用户的误操作,提示框是必要的,于是琢磨出了下面这个使用,方便的提示框 还要引入遮罩层的样式如下: /*弹出层*/.input{height: 32px;border: 1px ...

  2. lucene solr

    理解 lucene 是一个全文搜索的引擎 solr是全文搜索的web实现 --------------------.  java.lang.UnsupportedClassVersionError:  ...

  3. 常用dos命令和windows系统快捷键

    一.dos命令[重难点]1.OS——操作系统2.如何进入dos窗口?——P111 开始——程序——运行——输入cmd3.常用的dos操作命令 3.1 返回上一级 cd.. 3.2 返回到根目录 cd\ ...

  4. Visual studio 2019 preview & C# 8 initial experience

    Visual studio 2019 preview & C# 8 initial experience       using System; using static System.Con ...

  5. CFDA

    cfda数据抓取 1.网站数据是加密的,需要浏览器进行数据解析 2.网址url有js加密 3.PhantomJS无法解析数据, chrome无法获取数据,所有最终选择用Firefox浏览器 impor ...

  6. kafka清理

    由于项目原因,最近经常碰到Kafka消息队列拥堵的情况.碰到这种情况为了不影响在线系统的正常使用,需要大家手动的清理Kafka Log.但是清理Kafka Log又不能单纯的去删除中间环节产生的日志, ...

  7. idea gradle卡主问题

    http://services.gradle.org/distributions/  首先下载 all 版本 ,解压 ,再d盘, 并保留zip 文件  ,新建环境变量 GRADLE_HOME   指向 ...

  8. linux centos 访问根目录 not accessable

    chmod 777 root 即可 或  chmod a+x root https://blog.csdn.net/CSDN_GYG/article/details/73276310

  9. burpsuite的使用(一)

    安装证书: 打开burpsuite,设置好代理.端口8080,但是打开https的网站却因为证书问题无法访问. 这需要我们为浏览器手动安装CA证书, 安装CA证书有两种方式: 1. 在burpsuit ...

  10. 点击空白隐藏div

    window.onload = function(){ $(document).click(function(e){ $("#loginWrap").css('display',' ...