zoukankan      html  css  js  c++  java
  • .Net程序员之Python基础教程学习----字典的使用 [Third Day]

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

       一.字典的基本用法.

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

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

        

    >>> dic1={'Name':'Hardy','Age':24}
    >>> dic1
    {'Age': 24, 'Name': 'Hardy'}
    
    >>> imtes=[('Name','Frank'),('Age',23)]
    >>> dic = dict(imtes);
    >>> dic
    {'Age': 23, 'Name': 'Frank}

    >>> dic2={'Name':'Hardy','Age':24,'Name':'Frank'} #第一个被覆盖了
    >>> dic2
    {'Age': 24, 'Name': 'Frank'}

          2.字典的基本使用

        

    >>> imtes=[('Name','Frank'),('Age',23)]
    >>> dic = dict(imtes);
    >>> dic
    {'Age': 23, 'Name': 'Frank'}
    >>> len(dic)  #长度
    2
    >>> 'Age' in dic #判断是否有Key存在
    True
    >>> dic['Age'] = 22 #修改值
    >>> dic
    {'Age': 22, '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来实现的原理差不多.

        

        

  • 相关阅读:
    Python全栈之路系列----之-----并发编程Process类
    Python全栈之路系列----之-----网络编程(粘包与命令执行/数据传输)
    Python全栈之路系列----之-----网络编程(套接字)
    Python全栈之路系列----之-----面向对象5(封装/访问限制)
    Python全栈之路系列----之-----面向对象2(命名空间/组合)
    6. EF Core 数据库实体关系外键的配置
    5.EF Core 数据库映射模型隐藏属性配置
    4.EF Core 数据库映射模型基本配置
    3.EF Core 隐射表的几种默认约束
    2.EF Core添加数据库配置的几种方式
  • 原文地址:https://www.cnblogs.com/FourLeafCloverZc/p/4251222.html
Copyright © 2011-2022 走看看