今天学习了字典的使用, 所谓的字典其实就是键值对数据, 一个字典里面有唯一的Key对应一个value,Key是唯一的,Value不唯一. 在.net添加相同的Key会报错,在Python,若出现相同的Key,后面Key的value将会覆盖前面的数据.

   一.字典的基本用法.

    1.字典的创建: 字段的创建格式是{key:Value,Key:Value},也可以通过,dict函数转换。

Note:key的顺序按照字符串从小到大排序;如果声明字典的时候有相同的Key,取最后一个。(有别于.net)

    

>>> dic1={'Name':'Hardy','Age':}
>>> dic1
{'Age': , 'Name': 'Hardy'} >>> imtes=[('Name','Frank'),('Age',)]
>>> dic = dict(imtes);
>>> dic
{'Age': , 'Name': 'Frank} >>> dic2={'Name':'Hardy','Age':24,'Name':'Frank'} #第一个被覆盖了
>>> dic2
{'Age': 24, 'Name': 'Frank'}

      2.字典的基本使用

    

>>> imtes=[('Name','Frank'),('Age',)]
>>> dic = dict(imtes);
>>> dic
{'Age': , 'Name': 'Frank'}
>>> len(dic) #长度 >>> 'Age' in dic #判断是否有Key存在
True
>>> dic['Age'] = #修改值
>>> dic
{'Age': , 'Name': 'Frank'}
>>> del dic['Age'] #删除某个元素
>>> dic
{'Name': 'Frank'}

3.字典的格式化.
     在前面合计将了两种格式化,一种通过元组格式化数据,还有一种是通过template模板来使用字典格式化数据. 下面来解释字典格式化数据.

    

>>> workMsg = {'Frank':'Coder','Nancy':'HR','Vincent':'Project Manager'}
>>> 'Frank is the %(Frank)s' %workMsg
'Frank is the Coder'

   二. 字典内部提供方法的使用.

    1.Clear方法: 在使用Clear方法的时候大家请看下面三个例子.    

    Note:表面上通过dic={}是清空数据。

第一个案例:dicTestB1和dicTestA1都指向同一个空间。可是对于dicTestA1={}操作,其实是开辟了一个新空间,dicTest1指向了{}对应的空间,所以dicTestB1还是保留原来数据.  

       第二个案例: dicTestB2和dicTestA1指向同一个空间. 可是dicTestA1.clear()是对当前空间清空,没有产生其他新的空间,所以dicTestB2也没有数据了.

       第三个案例: 因为调用了copy()方法,其实在dicTestB3=dicTestA3.copy()时就开辟了新空间,那么dicTestB3和dicTestA3已经毫无相关了,所以dicTestA3任何操作不影响dicTextB3值     

>>> dicTestA1 = {'Name':'Frank'}
>>> dicTestB1 = dicTestA1
>>> dicTest1={}
>>> dicTest1
{}
>>> dicTestB1
{'Name': 'Frank'}
>>>
>>> dicTestA2={'Name':'Frank'}
>>> dicTestB2=dicTestA2
>>> dicTestA2.clear()
>>> dicTestB2
{}
>>>
>>> dicTestA3={'Name':'Frank'}
>>> dicTestB3=dicTestA3
>>> dicTestB3 = dicTestA3.copy()
>>> dicTestA3.clear()
>>> dicTestA3={}
>>> dicTestB3
{'Name': 'Frank'}

     2.fromkeys: 为字典添加values为空的key.

    

>>> {}.fromkeys(['Name','Age'])
{'Age': None, 'Name': None}}
>>> {}.fromkeys(['Name','Age'],'Unkown')
{'Age': 'Unkown', 'Name': 'Unkown'}
>>>

3. has_key() 和key in dic一样判断是否包含key
            4. items 和 iteritems: 获取字典元素列表,用于字典的遍历,类是于.net的keyvaluepair<key,value>,后者是通过迭代器实现的.一般来说迭代器的效率更高.

    

>>> workMsg = {'Frank':'Coder','Nancy':'HR','Vincent':'Project Manager'}
>>> workMsg.items()
[('Frank', 'Coder'), ('Vincent', 'Project Manager'), ('Nancy', 'HR')]
>>> list(workMsg.iteritems())
[('Frank', 'Coder'), ('Vincent', 'Project Manager'), ('Nancy', 'HR')]
>>>

     5.keys和iterkeys 以及 values和itervalues 分别实现后去key列表和values列表.

6.pop(key) 和 popitem 以及del 实现对字段元素的删除

7.update(parma) 一个字典更新另一个字典.

三. 总结:

    

         整体来说,字典还是挺简单的. 不过对于里面调用方法的clear()以及update()都是对当前内存的数据进行操作,如果单独通过=来赋值也可以达到更新效果,其实原理是不一样,
=号相当于丢弃以前数据重新在新的内存存储。这个有点类是于我们常常对数据库的数据进行更新,可以通过update来实现,也可以通过delete和add来实现的原理差不多.

    

    

.Net程序员之Python基础教程学习----字典的使用 [Third Day]的更多相关文章

  1. .Net程序员之Python基础教程学习----列表和元组 [First Day]

    一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...

  2. .Net程序员之Python基础教程学习----函数和异常处理[Fifth Day]

       今天主要记录,Python中函数的使用以及异常处理. 一.函数:    1.函数的创建以及调用. def Add(val1,val2): return val1+val2; print Add( ...

  3. .Net程序员之Python基础教程学习----判断条件与循环[Fourth Day]

        今天学习Python的判断条件与循环操作. 一. 布尔变量: 在学习判断条件之前必须的了解bool变量,在Python中bool变量与C语言比较类似,与.net差别比较大,其中下面集中情况需要 ...

  4. .Net程序员之Python基础教程学习----字符串的使用 [Second Day]

         在The FirstDay 里面学习了列表的元组的使用,今天开始学习字符串的使用.字符串的使用主要要掌握,字符串的格式化(C语言中我们应该都知道,Python和C语言差别不大),字符串的基本 ...

  5. Python基础教程学习笔记:第一章 基础知识

    Python基础教程 第二版 学习笔记 1.python的每一个语句的后面可以添加分号也可以不添加分号:在一行有多条语句的时候,必须使用分号加以区分 2.查看Python版本号,在Dos窗口中输入“p ...

  6. 【学习笔记】Python基础教程学习笔记

    教程视频网盘共享:http://pan.baidu.com/s/1hrTrR5E 03-python基础.if判断 print 输出数据 print("hahahah")----- ...

  7. Python基础教程学习(四)类的创建与继承

    类中可以有方法,类外也可以有函数,其实类就是一种封装, Python中可以自己定义一个函数,一可以把这个函数在类中封装成一个方法, 其中的属性和方法自然就从父类中继承来了, 要想获得多个类的属性和功能 ...

  8. Python基础教程学习(三)

    如何定义类 class ClassName(base_class[es]): "optional documentation string" static_member_decla ...

  9. Python基础教程学习笔记:第二章 列表和元组

    1.序列中元素的索引: 第一个元素索引是0,第二个是1,依次递增 最后一个元素索引是-1,倒数第二个是-2,依次递减 2.序列(Sequence)的种类: 列表(list).元组(tuple).字符串 ...

随机推荐

  1. 使用Sublime Text作为Markdown编辑器

    Sublime Text 3作为一个优秀的文本编辑器,拥有很多的扩展插件.我们可以利用这些插件为Sublime Text 增加扩展的功能,在这里我们借助两个插件来将Sublime Text 3变成一个 ...

  2. jScrollPane 美化滚动条

    在线实例 滚动条可见 滚动条隐藏 使用方法 <div class="container"> <h1>滚动条可见</h1> <div cla ...

  3. go语言 类型:布尔类型

    Go语言中的布尔类型与其他语言基本一致,关键字也为bool,可赋值为预定义的true和false示例代码如下: var v1 bool v1 = true v2 := (1 == 2) // v2也会 ...

  4. Hybrid框架UI重构之路:五、前端那点事儿(HTML、CSS)

    上文回顾 :Hybird框架UI重构之路:四.分而治之 这里讲述在开发的过程中,一些HTML.CSS的关键点. 单页模式的页面结构 在单页模式中,弱化HTML的概念,把HTML当成一个容器,BODY中 ...

  5. 创建和删除节点:——核心DOM

    1. 创建单个元素节点:3步:       1. 创建空元素节点对象:          var elem=document.createElement("标签名");      ...

  6. css引入方式优先级以及不同选择器的优先级区别

    我们都知道css有3种基本设置方式即 1.行内也叫嵌入式 例如: <div style='background:red'></div> 2.内联式,在html文件中用style ...

  7. C C++ TDD单元测试非常好的书

    http://product.china-pub.com/199003 测试驱动的嵌入式C语言开发 Test Driven Development for Embedded C <测试驱动的嵌入 ...

  8. iOS自动布局进阶用法

    本文主要介绍几个我遇到并总结的相对高级的用法(当然啦牛人会觉得这也不算什么). 简单的storyboard中上下左右约束,固定宽高啥的用法在这里就不做赘述了. autolayout自动布局是iOS6以 ...

  9. iOS关于CoreAnimation动画知识总结

    一:UIKit动画 在介绍CoreAnimation动画前先简单介绍一下UIKit动画,大部分简单的动画都可以使用UIKit动画实现,如果想实现更复杂的效果,则需要使用Core Animation了: ...

  10. JSONKit does not support Objective-C Automatic Reference Counting(ARC) / ARC forbids Objective-C objects in struct

    当我们在使用JSONKit处理数据时,直接将文件拉进项目往往会报这两个错“JSONKit   does not support Objective-C Automatic Reference Coun ...