初识Python(5)__Python映射和集合

映射类型:字典

字典:可以快速查到某个特定的词语(键),从而找到它的定义(值)。(没有顺序)键和值之间用冒号(:)隔开,项之间用逗号(,)隔开,字典由{}括起来

>>> dict1 = {}                                #空字典

>>> dict2 = {‘name‘: ‘earth‘, ‘port‘: 80}            #用{}创建
>>> dict1, dict2
({}, {‘port‘: 80, ‘name‘: ‘earth‘})

>>> fdict = dict(([‘x‘, 1], [‘y‘, 2]))                 #用工厂函数dict()创建
>>> fdict
{‘y‘: 2, ‘x‘: 1}

基本字典操作

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

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

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

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

k in/not in d---检查d中是否含有键为k的项(从Python 2.2 起,程序员可以不用has_key()方法,而用 in 和 not in 操作符来检查某个键是否存在于字典中)

关于删除字典元素和字典

del dict2[‘name‘]     # 删除键为“name”的条目

dict2.clear()         # 删除dict2 中所有的条目

del dict2            # 删除整个dict2 字典

dict2.pop(‘name‘)     # 删除并返回键为“name”的条目

字典比较算法

按一下顺序比较:

(1)     比较字典长度

(2)     比较字典的键

(3)     比较字典的值

(4)     Exact Match

关于工厂函数dict()

工厂函数被用来创建字典。如果不提供参数,会生成空字典。当容器类型对象做为一个参数传递给方法dict() 时很有意思。如果参数是可以迭代的,即,一个序列,或是一个迭代器,或是一个支持迭代的对象,那每个可迭代的元素必须成对出现。在每个值对中,第一个元素是字典的键、第二个元素是字典中的值。

>>> dict(zip((‘x‘, ‘y‘), (1, 2)))
{‘y‘: 2, ‘x‘: 1}

>>> dict([[‘x‘, 1], [‘y‘, 2]])
{‘y‘: 2, ‘x‘: 1}

>>> dict([(‘xy‘[i-1], i) for i in range(1,3)])
{‘y‘: 2, ‘x‘: 1}

字典方法

1) d.clear():清除字典中的所有的项(清空原始字典中所有的元素)

2) d.copy():返回一个具有相同键-值对的新字典(该方法是浅复制,使用相同的值,改动一个值,则都变化)
    >>> dict4 = dict2.copy()
    >>> dict4
{‘server‘: ‘http‘, ‘port‘: 80, ‘host‘: ‘venus‘}

3) d.deepcopy():深复制,复制其包含的值。from copy import deepcopy

4) d.fromkeys():使用给定的件建立新的字典,默认对应的值为None---{}.fromkeys([‘name‘,‘age‘])自己提供默认值:dict.fromkeys([‘name‘,‘age‘],‘(unknow)‘)---unknow为值
    >>> {}.fromkeys(‘xyz‘)
    {‘y‘: None, ‘x‘: None, ‘z‘: None}
    >>>
    >>> {}.fromkeys((‘love‘, ‘honor‘), True)
    {‘love‘: True, ‘honor‘: True}

5) d.get():更宽松的访问字典,即使访问不存在的键时,也不会出现异常,而是得到None值。默认的None值可以替换:d.get(‘name‘,‘N/A‘)
    >>> dict4.get(‘host‘)
    ‘venus‘
    >>> dict4.get(‘xxx‘)
    >>> type(dict4.get(‘xxx‘))
    <type ‘None‘>
    >>> dict4.get(‘xxx‘, ‘no such key‘)
    ‘no such key‘

6) d.has_key():检查字典中是否含有给出的键。 d.has_key(k) 相当于表达式k in d。

7) d.items():将字典以列表形式返回d.items()

8) d.iteritems():和tiems类似,不过是返回一个迭代器对象

9) d.keys():将字典中的键以列表形式返回

10) d.iterkeys(): 返回一个针对键的迭代器

11) d.pop(): 给指定键,返回该键的值,然后再删掉这个键-值。

12) d.popitem():和pop类似,不过不需要给出键

13) d.setdefault():检查字典中是否含有某键。 如果字典中这个键存在,你可以取到它的值。 如果所找的键在字典中不存在,你可以给这个键赋默认值并返回此值。
    >>> myDict = {‘host‘: ‘earth‘, ‘port‘: 80}
    >>> myDict.keys()
    [‘host‘, ‘port‘]
    >>> myDict.items()
    [(‘host‘, ‘earth‘), (‘port‘, 80)]
    >>> myDict.setdefault(‘port‘, 8080)
    80
    >>> myDict.setdefault(‘prot‘, ‘tcp‘)
   ‘tcp‘
    >>> myDict.items()
    [(‘prot‘, ‘tcp‘), (‘host‘, ‘earth‘), (‘port‘, 80)]

14) d.update(): 把一个字典项更新到目标字典。d.update(x)--把x字典更新到d字典
    >>> dict2= {‘host‘:‘earth‘, ‘port‘:80}
    >>> dict3= {‘host‘:‘venus‘, ‘server‘:‘http‘}
    >>> dict2.update(dict3)
    >>> dict2
    {‘server‘: ‘http‘, ‘port‘: 80, ‘host‘: ‘venus‘}
    >>> dict3.clear()                        #清空字典所有项
     >>> dict3
    {}

15) d.values(): 以列表的形式返回字典中的值,返回值的列表可以包含重复的元素。

16) d.itervalues():返回值的迭代器

集合

集合的创建

只能通过工厂函数set() 和 frozenset() 创建:

>>> j = set(‘jayjiang‘)
>>> j
set([‘a‘, ‘g‘, ‘i‘, ‘j‘, ‘n‘, ‘y‘])

>>> i = frozenset(‘jayjiang‘)
>>> i
frozenset([‘a‘, ‘g‘, ‘i‘, ‘j‘, ‘n‘, ‘y‘])

>>> j == i
True

>>> type(j)
<type ‘set‘>

>>> type(i)
<type ‘frozenset‘>

>>> 

集合的操作(适用于所有类型集合)

 1 成员关系(in,not in)
 2
 3 集合等价/不等价(==, !=)
 4
 5 子集/超集( <,<=,>, >=)
 6
 7 联合( | )
 8
 9 交集( & )
10
11 差补/相对补集( – )
12
13 对称差分( ^ )

集合类型方法

方法名称  操作
s.issubset(t) 如果s 是t 的子集,则返回True,否则返回False
s.issuperset(t)   如果t 是s 的超集,则返回True,否则返回False
s.union(t)     返回一个新集合,该集合是s 和t 的并集
s.intersection(t) 返回一个新集合,该集合是s 和t 的交集
s.difference(t) 返回一个新集合,该集合是s 的成员,但不是t 的成员
s.symmetric_difference(t) 返回一个新集合,该集合是s 或t 的成员,但不是s 和t 共有的成员
s.copy() 返回一个新集合,它是集合s 的浅复制

可变集合类型的操作方法( set() )

方法名 操作
s.update(t)  用t 中的元素修改s, 即,s 现在包含s 或t 的成员
s.intersection_update(t)  s 中的成员是共同属于s 和t 的元素
s.difference_update(t)  s 中的成员是属于s 但不包含在t 中的元素
s.symmetric_difference_update(t)   s 中的成员更新为那些包含在s 或t 中,但不 是s和t 共有的元素
s.add(obj) 在集合s 中添加对象obj
s.remove(obj) 从集合s 中删除对象obj;如果obj 不是集合s 中的元素(obj notin s),将引发KeyError 错误
s.discard(obj) 如果obj 是集合s 中的元素,从集合s 中删除对象obj
s.pop() 删除集合s 中的任意一个对象,并返回它
s.clear() 删除集合s 中的所有元素
时间: 2024-12-28 16:10:36

初识Python(5)__Python映射和集合的相关文章

初识Python(2)__Python 对象

Python 对象 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性(特征)和行为来描述一个对象的.比如家里的小狗,它的颜色,大小,年龄,体重等是它的属性或特征.它会汪汪叫,会摇尾巴等是它的行为. 我们在描述一个真实对象(物体)时包括两个方面: 它可以做什么(行为) 它是什么样的(属性或特征). 在python中,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(met

初识Python(9)__Python函数

函数 参考 : ######################################################### http://www.w3cschool.cc/python/python-functions.html http://developer.51cto.com/art/200809/88052.htm http://www.pythondoc.com/pythontutorial27/controlflow.html#tut-functions http://see

初识Python(8)__Python错误和异常

错误和异常 ################################################################################## 参考:http://blog.csdn.net/fcoolx/article/details/4202872 http://blog.163.com/[email protected]/blog/static/279729562008719384580/ https://docs.python.org/2/library

初识Python(1)__Python基础

Python基础 一.  注释(#) Python注释语句是用“#”字符开始,注释可以在一行的任何地方开始,解释器会忽略掉该行 # 之后的所有内容. 单行注释:   1 print ‘hello, world!’ #打印 hello,world 多行注释:多行注释用三引号’’’将需要注释的部分括起来,例如: 1 ’’’ 2 Hello ,world. 3 I’m Jay, and l like python. 4 ’’’ 3. 中文注释:需要在文件头写上: #coding=gbk 或者 #cod

初识Python(10)__Python模块

模块 什么是模块 自我包含并且有组织的代码片断就是模块( module ) 模块是Pyhon最高级别的程序组织单元,它将程序代码和数据封装起来以便重用.实际的角度,模块往往对应Python程序文件.每个文件都是一个模块,并且模块导入其他模块之后就可以使用导入模块定义的变量名.模块可以由两个语句和一个重要的内置函数进行处理.import: 使客户端(导入者)以一个整体获取一个模块.from:容许客户端从一个模块文件中获取特定的变量名.reload:在不中止Python程序的情况下,提供了一个重新载

初识Python(4)__Python序列

序列 序列包含:字符串,列表和元组 序列基本操作符 索引:seq[ind] 获得下标为ind 的元素 分片( [], [:], [::] ):seq[ind1:ind2] 获得下标从ind1 到ind2 间的元素集合 重复操作符( * ):seq * expr 序列重复expr 次 连接操作符( + ):sequence1 + sequence2,该表达式的结果是一个包含sequence1 和sequence2 的内容的新序列 判断成员资格:obj in/not in seq 判断obj 元素是

初识Python(3)__Python 数字

数字类型 关于删除数字对象 按照Python 的法则, 你无法真正删除一个数值对象, 你仅仅是不再使用它而已.如果你实际上想删除一个数值对象的引用, 使用 del 语句 Python支持四种数字类型 整型:通常被称为只是整数或整数,是正或负整数,不带小数点. 长整型:非常长的整型,在数字最后有L,如“51924361L” 浮点数:双精度浮点数,浮点数值通常都有一个小数点和一个可选的后缀e(大写或小写,表示科学计数法).在e和指数之间可以用正(+)或负(-)表示指数的正负(正数的话可以省略符号)

07 映射和集合类型 - 《Python 核心编程》

?? 映射类型: 字典 ?? 操作符 ?? 内建函数 ?? 内建方法 ?? 字典的键 ?? 集合类型 ?? 操作符 ?? 内建函数 ?? 内建方法 ?? 相关模块 7.1 映射类型:字典 字典是Python 语言中唯一的映射类型. 映射类型对象里哈希值(键) 和指向的对象(值)是一对多的关系. 字典类型和序列类型容器类(列表.元组)的区别是存储和访问数据的方式不同. 序列类型只 用数字类型的键(从序列的开始起按数值顺序索引). 映射类型可以用其他对象类型做键:一般最常 见的是用字符串做键(key

Python核心编程读笔 5: 映射和集合类型

第七章 映射和集合能力 一 字典(python中唯一的映射类型) 1 基本 创建和赋值: 正常创建:>>>dict = {'name':'earth', 'port':80} 用工厂函数dict()创建: >>> fdict = dict((['x', 1], ['y', 2])) >>> fdict {'y': 2, 'x': 1} 使用fromkeys()创建一个默认字典: >>> ddict = {}.fromkeys(('x'