码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-11-11 22:24:53      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   ar   os   使用   sp   

 

映射类型:字典

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

>>> 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()方法,而用 innot 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 成员关系(innot 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 中的所有元素

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

标签:style   blog   http   io   color   ar   os   使用   sp   

原文地址:http://www.cnblogs.com/sunnyjiangjie/p/4090438.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!