Python Learning Note Day 11

2018-03-31 0 条评论 173 次阅读 1 人点赞

今天是Python学习第十一天,今天主要对字典进行了补充,同时开始做《Python编程从入门到实践》中的第一个项目‘外星人入侵’(PS:灰机大战),pygame做2d游戏,有点意思。

项目的话可能就是一个利用pygame包来做2d游戏的过程。重点可能不在于做游戏本身,而是怎么样一步步把一个项目做出来,然后不断的去重构和优化代码,把一个看似很大的项目分解成不同的模块,各司其职,这点很重要。从做这行起,多数时候我都是独立开发,这种分模块(甚至说需要团队去配合)的机会很少,所以,这一块是我很欠缺的,这样走一圈,可能会更明白自己的代码要怎么写,才能让自己让他人修改和理解起来更简单容易。

接下就来总结下字典部分补充的知识。

补充知识

1. dict函数

函数dict可以从其他映射(如其他字典)或键-值对序列创建字典。

也可以使用关键字实参的方式提供

2. 键的类型

字典中的键可以是整数,但并非必须是整数。字典中的键可以是任何不可变的类型,如浮点数(实数)、字符串或元组。

3. 成员资格

表达式k in d(其中d是一个字典)查找的是键而不是值,而表达式v in l(其中l是一个列表)查找的是值而不是索引。这

4.将字符串格式设置功能用于字典

像下面这样使用字典时,可指定任意数量的转换说明符,条件是所有的字段名都是包含在字典中的键。

5. clear
方法clear删除所有的字典项,这种操作是就地执行的(就像list.sort一样),因此什么都不返回(或者说返回None)。

6. copy
方法copy返回一个新字典,其包含的键值对与原来的字典相同(这个方法执行的是浅复制,因为值本身是原件,而非副本)。

当替换副本中的值(timo)时,原件不受影响。然而,如果修改副本中的值(就地修改而不是替换),原件也将发生变化,因为原件指向的也是被修改的值(如这个示例中的'mimi'列表所示)。
为避免这种问题,一种办法是执行深复制,即同时复制值及其包含的所有值,等等。为此,可使用模块copy中的函数deepcopy。

7. fromkeys
方法fromkeys创建一个新字典,其中包含指定的键,且每个键对应的值都是None。

也可以直接对dict函数使用fromekeys,如果你不想使用默认值None,可提供特定的值。

8. get
方法get为访问字典项提供了宽松的环境。通常,如果你试图访问字典中没有的项,将引发错误。使用get来访问不存在的键时,没有引发异常,而是返回None。你可指定“默认” 值,这样将返回你指定的值而不是None。

9. pop
方法pop可用于获取与指定键相关联的值,并将该键-值对从字典中删除。

10. popitem
方法popitem类似于list.pop,但list.pop弹出列表中的最后一个元素,而popitem随机地弹出一个字典项,因为字典项的顺序是不确定的,没有“最后一个元素”的概念。如果你要以高效地方式逐个删除并处理所有字典项,这可能很有用,因为这样无需先获取键列表。

11. setdefault
方法setdefault有点像get,因为它也获取与指定键相关联的值,但除此之外,setdefault还在字典不包含指定的键时,在字典中添加指定的键-值对。

指定的键不存在时,setdefault返回指定的值并相应地更新字典。如果指定的键存在,就返回其值,并保持字典不变。与get一样,值是可选的;如果没有指定,默认为None。

12. update
方法update使用一个字典中的项来更新另一个字典。 对于通过参数提供的字典,将其项添加到当前字典中。如果当前字典包含键相同的项,就替换它。

13.本章介绍的新函数

dict(seq)         从键-值对、映射或关键字参数创建字典。

 

时间不够用啊!

Kiwi

Valar Morghulis

文章评论(0)