zoukankan      html  css  js  c++  java
  • Python基础教程【读书笔记】

    希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴!

    第八波:第4章  字典:当索引不好用时

      将学到一种通过名字引用值的数据结构,这种结构类型称为映射mapping。字典是Python内唯一内建的映射类型。字典中的值并没有特殊的顺序,都是存储在一个特定的键key里。键可以使 数字、字符串甚至是元组。

    [4.1] 字典的使用

      字典有时比列表更加使用。

    [4.2] 创建和使用字典

        字典由多个键及其对应的值构成的对组成(也把键/值对称为项)。每个键和它的值之间用冒号隔开,项之间用逗号隔开,而整个字典是由一堆大括号括起来。字典中的键是唯一的,而值并不唯一。

    [4.2.1] dict函数

      使用dict函数,通过其他映射或者键值序列对简历字典。

    [4.2.2] 基本字典操作

      len(d)返回d中项的数量

      d[k]返回关联到键k上的值

      d[k]=v将值v关联到键k上

      del d[k]删除键为k的项

      k in d 检查d中是否含有键为k的项

      尽管字典和列表有多重特性相同,但也有下面一些重要的区别。

      键类型:字典的键不一定为整型数据,也可能是其他不可变类型,如浮点型、字符串或者元组

      自动添加:即使那个键期初在字典中并不存在,也可以为它分配一个值。

      成员资格:k in d查找的是键,而不是值。在字典中检查键的成员资格比在列表中检查值得成员资格更高效,数据结构的规模越大,两者的效率差距越明显。

    [4.2.3] 字典的格式化字符串

    [4.2.4] 字典方法

      1. clear

      clear方法清除字典中所有的项。这是个原地操作(类似于list.sort),所以无返回值(或者说返回None)。 如果真的想清空原始字典中所有的元素,必须使用clear方法。

      2. copy

      copy方法返回一个具有相同键值对的新字典(这个方法实现的是浅赋值shallow copy),因为值本身就是相同的,而不是副本。

      x={'username':'admin','machines':['foo','bar','baz']}

      y=x.copy()

      y['username']='mlh'

      y['machines'].remove('bar')

      >>>y

      {'username':'mlh','machines':['foo','bar']}

      >>>x

      {'username':'admin','machines':['foo','bar']}

      当副本中替换值的时候,原始字典不受影响。但是如果修改了某个值(原地修改,而不是替换),原始的字典也会改变,因为同样的值也存储在原字典中。

      避免这个问题的一种方法就是使用深复制deep copy,复制器包含所有的值。可以使用copy模块的deepcopy函数来完成操作:  

      from copy import deepcopy

      3. fromkeys

      fromkeys方法使用给定的键建立新的字典,每个键默认对应的值为None。

      dict.fromkeys(['name','age'])  

      dict.fromkeys(['name','age'],'(Unknown)')  #不使用None作为默认值,自己提供默认值

      4. get

      get方法是更宽松的访问字典项的方法。当使用get访问一个不存在的键时,没有任何异常,而得到了None值。还可以自定义“默认”值,替换None:d.get('name','N/A')

      5. has_key

      has_key方法可以检查字典中是否含有给出的键。

      6. items和iteritems

      items方法将所有的字典项以列表方式返回,这些列表项中的每一项都来自于键值对。并且项在返回时并没有特殊的顺序。

      iteritems方法的作用大致相同,但是会返回一个迭代器对象而不是列表。在很多情况下使用iteritems更高效,尤其是想要迭代结果的情况下。

      7. keys和iterkeys

      keys方法将字典中的键以列表形式返回,而iterkeys则返回针对键的迭代器。

      8. pop

      pop方法用来获得对应于给定键的值,然后讲这个键-值对从字典中移除。

      9. popitem

      popitem方法类似于list.pop,后者会弹出列表的最后一个元素。但不同的是,popitem弹出随机的项,因为字典并没有“最后的元素”或者其他有关顺序的概念。若想一个接一个地移除并处理项,这个方法就非常有效了,因为不用首先获取键的列表。

      字典中没有与append等价的方法,因为字典是无序的,类似于append的方法是没有任何意义的。

      10. setdefault

      setdefault方法在某种程度上类似于get方法,就是能够获得与给定键相关联的值,除此之外,setdefault还能在字典中不含有给定键的情况下设定相应的键值。

      11. update

      update方法可以利用一个字典项更新另外一个字典。提供的字典中的项会被添加到旧的字典中,若有相同的键则会进行覆盖。

      12. values和itervalues

      values方法以列表的形式返回字典中的值,itervalues返回值的迭代器。与返回键的列表不同的是,返回值的列表中可以包含重复的元素。

    [4.3] 小结

      映射:映射可以使用任何不可变对象标识元素。Python唯一内建的映射类型是字典。

      利用字典格式化字符串:通过格式化说明符中包括名称(键)来对字典应用字符格式化操作。

      字典的方法:调用的方法和调用列表以及字符串方法的方式相同。

  • 相关阅读:
    ASP.NET MVC必知必会知识点总结(二)
    ASP.NET MVC WEB API必知必会知识点总结
    ASP.NET MVC必知必会知识点总结(一)
    运用javascript的成员访问特性来实现通用版的兼容所有浏览器的打开对话框功能
    javascript必知必会:面象对象编程
    关于Entity Framework采用DB First模式创建后的实体批量修改相关属性技巧
    magrittr管道操作符使用解释(一)
    手把手教你学习R语言
    R工具包一网打尽
    用R创建Word和PowerPoint文档--转载
  • 原文地址:https://www.cnblogs.com/pythonMLer/p/5683365.html
Copyright © 2011-2022 走看看