Python回顾与整理5:映像和集体类型

0.说明

依然是按照前面介绍的几种序列类型的思路来总结字映像类型和集合类型,即先做一个介绍,再讨论可用操作符、工厂函数、内建函数和方法。



1.映射类型:字典

映射类型被称做哈希表,而Python中的字典对象就是哈希类型,即它是按照这样的方式来存储数据:(哈希表的算法)是获取键,对键执行一个叫做哈希函数的操作,并根据计算的结果,选择在数据结构的某个地址中来存储对象的值。任何一个值存储的地址取决于它的键,正因为这种随意性,哈希表中的值是没有顺序的,所以Python中的字典对象中的元素也是无序的。

下面是字典的基本操作:

(1)创建字典和给字典赋值

主要的方法如下:

  • 直接创建赋值:可整体赋值,也可以逐一添加键值对
  • 工厂函数dict()
>>> fdict = dict(([‘xpleaf‘, ‘boy‘], [‘cl‘, ‘girl‘]))
>>> fdict
{‘xpleaf‘: ‘boy‘, ‘cl‘: ‘girl‘}
  • 内建函数fromkeys():创建默认字典,字典中元素具有相同的值(如果没有给出,默认为None)
>>> fdict = {}.fromkeys((‘xpleaf‘, ‘cl‘), ‘lovings‘)
>>> fdict
{‘xpleaf‘: ‘lovings‘, ‘cl‘: ‘lovings‘}
>>> edict = {}.fromkeys((‘xpleaf‘, ‘cl‘))
>>> edict
{‘xpleaf‘: None, ‘cl‘: None}

(2)访问字典中的值

  • 循环字典的键
>>> fdict = {‘xpleaf‘: ‘boy‘, ‘cl‘: ‘girl‘}
>>> for key in fdict.keys():
...   print key, fdict[key]
... 
xpleaf boy
cl girl
  • 使用迭代器访问类序列对象
>>> fdict = {‘xpleaf‘: ‘boy‘, ‘cl‘: ‘girl‘}
>>> for key in fdict:
...   print key, fdict[key]
... 
xpleaf boy
cl girl
  • 先判断键值是否存在再访问
>>> fdict = {‘xpleaf‘: ‘boy‘, ‘cl‘: ‘girl‘}
>>> fdict.has_key(‘xpleaf‘)
True
>>> ‘xpleaf‘ in fdict
True
>>> ‘clyyh‘ in fdict
False

(3)更新字典

可以更新已有的键值对或添加新的键值对:

>>> fdict = {‘host‘: ‘xpleaf‘, ‘port‘: 80}
>>> fdict[‘port‘] = 3389
>>> fdict[‘ip‘] = ‘121.42.147.131‘
>>> print ‘host: %(host)s, port: %(port)s, ip: %(ip)s‘ % fdict
host: xpleaf, port: 3389, ip: 121.42.147.131

(4)删除字典元素和字典

>>> fdict = {‘host‘: ‘xpleaf‘, ‘port‘: 80, ‘ip‘: ‘121.42.147.131‘}
>>> del fdict[‘port‘]  #删除一个键值对
>>> fdict.clear()        #删除字典中所有的键值对
>>> del fdict             #删除整个字典


3.映射类型操作符

除了不支持拼接和重复,字典可以和所有的标准类型操作符一起工作。

(1)标准类型操作符

在《Python回顾与整理2:Python对象》中已经有介绍过标准类型操作符,它们对字典类型也是适合的,主要是:>、<、==和and等,如下:

>>> dict1 = {‘abc‘: 123}
>>> dict2 = {‘abc‘: 456}
>>> dict1 < dict2
True
>>> dict1 == dict2
False

(2)映射类型操作符

  • 字典的键查找操作符([])

对序列类型来说,用索引做唯一参数或下标以获取一个序列的值,但是对字典来说,是用键查询,键是参数,而不是索引。通过`[]`操作符,可以在字典中查找元素,也可以为某个元素赋值。

  • 键成员关系操作(in、not in)

当然也可以用has_key()。

时间: 2024-12-22 08:02:46

Python回顾与整理5:映像和集体类型的相关文章

Python回顾与整理4:序列(字符串/列表/元组)

0.说明 序列其实是Python的某几类数据类型的统称,如字符串,列表和元组,将它们统称为序列,是因为:它们的成员有序排列,并且可以通过下标偏移量访问到它的一个或者几个成员. 总结的思路为:先介绍适用于所有序列类型的操作符和内建函数,然后再分别对这几种序列类型进行介绍. 1.序列 序列类型都有相同的访问模式:它的每一个元素都可以通过指定一个偏移量的方式得到,多个元素通过切片操作的方式得到.而在Python序列中,偏移量的规则如下(假设序列长度为N): (1)标准类型操作符 在<Python回顾与

Python回顾与整理3:数字

Python回顾与整理3:数字 0.说明 数字用的次数是否多主要是看需求,如果是做自动化运维平台开发,比如做一个自动监控的系统,那么你肯定需要收集一定量的数据,然后再对这些数据做一定的处理,那么这时候,你就一定需要用得上数字的.当然,我这里所说的要不要用数字,指的是,你是否需要对你的数据做一定的处理. 1.数字简介 数字是不可更改类型,也就是说变更数字的值会生成新的对象. (1)创建数值对象并用其赋值(数字对象) >>> anInt = 1 >>> aComplex =

Python回顾与整理2:Python对象

0.说明 说对象是面向对象编程语言最重要的一部分一点也不为过,没有了"对象",面向对象将无从谈起.Python也是如此,如果无法掌握对象,你很难有大的进步与提升. 1.Python对象 (1)对象特性 Python使用对象模型来存储数据,构造任何类型的值都是一个对象,所有的Python对象都拥有下面的三个特性: 身份:每个对象一唯一身份标识,可使用内建函数id()查看该值(可以认为这个值是该对象的内在地址) 类型:对象的类型决定了对象(可以保存什么类型的值,进行什么样的操作,遵循什么样

Python回顾与整理12:执行环境

0.说明 作为<Python核心编程>核心部分的最后一章,这篇的内容也相当重要.对于高级部分的整理,将采用<Python核心编程>第三版,但是,方式会以之前的完全不一样了. 1.可调用对象 可调用对象即可通过函数操作符"()"来调用的对象,也可以通过函数式编程接口来进行调用,如apply().filter().map()和reduce().Python有4种可调用对象:函数.方法.类和一些类的实例. (1)函数 Python中有三种不同类型的函数:内建函数(BI

Python回顾与整理10:模块

0.说明 模块是用来组织Python代码方法的方法,而包则是用来组织模块的,充分利用好包和模块将有利于开发出结构清晰的大型程序. 1.什么是模块 所谓模块,其实就是一个包含了特定功能代码的.py文件,在这个.py文件中,主要有如下的代码类型: 包含数据成员和方法的类 一组相关但彼此独立的操作函数 全局变量 使用import语句就可以导入一个模块中的相关属性. 2.模块和文件 模块是按照逻辑上来组织Python代码的方法,而体现在物理层面上,它就是一个文件,因此,一个文件被看作是一个独立模块,一个

Python回顾与整理8:错误和异常

0.说明 如果想写出用户体验高的代码,那么就需要考虑到在执行自己写的这段代码中在和用户交互的过程中可能会出现的问题,也就是说,需要对可能出现的异常进行处理,只有做好这些工作,才能写出用户体验好的代码. 1.什么是异常 错误 错误是语法(导致解释器无法解释)或逻辑(也就是代码质量问题)上的,在Python中,当检测到错误时,解释器会指出当前流无法继续执行下去,于是就出现了异常. 异常 程序出现了错误而在正常控制流以外采取的行为. 根据上面的解释,可以理解为,只要解释器检测到程序运行时出现了错误(与

Python回顾与整理9:函数和函数式编程

0.说明 无论在什么编程语言中,函数都不可或缺,充分利用函数的特性,可以大大减少我们程序中的代码量. 1.什么是函数 所谓函数,英文名为function,其实就是表示为实现一定功能的一段代码,显然,如果需要多次实现某一功能时,使用函数就是把重复代码放入其中,既节省空间,又有助于保持一致性(主要是修改代码时). (1)函数vs过程 两者都是可以被调用的实体,过程是简单.没有返回值.特殊的函数.在Python中,过程就是函数,因为解释器会隐匿地返回默认值None. (2)返回值与函数类型 在C语言中

Python回顾与整理6:条件和循环

0.说明 提及的内容为:if.while.for及与他们相搭配的else.elif.break.continue和pass语句. 1.if语句 语法 if expression:         expr_true_suite 其中对于expression部分可以使用逻辑连接词an.or和not来实现多重判断条件. 单一语句的代码块 即如果只有一个语句执行时,可以写成下面这样: if True: print 'OK' 但还是建议写在不同的行. 2.else语句 语法 if expression:

python day04 学习整理

python day4 学习整理 1.装饰器 #什么是装饰器#器是指函数#装饰就是修饰,意思是为其他函数添加新功能#装饰器定义:本质就是函数,定义是为其他函数添加新功能 ##装饰器需要遵循的原则#1,不修改被装饰函数的源代码(开放封闭原则)#2,为被装饰函数添加新功能后,不修改被装饰函数的调用方式 #实现装饰器的知识储备#装饰器 = 高阶函数 + 函数嵌套 + 闭包 # def foo(x):# def foo1(x):# return x# return foo1## print(foo(1)