二、元组(tuple):不可变序列 

跟list一样,也是一种序列,唯一不同的是,元组元素不能被修改,通常用(, ,)表示元组,也可以不加括号。

 #创建元组
>>> 1,2,3
(1, 2, 3)
>>> t = (1,2,3)
>>> t
(1, 2, 3)
#创建空元组
>>> t1 = ()
>>> t1
()
#创建只有一个元素的元组,这里注意必须带上逗号
>>> t2 = (1,)
>>> t2
(1,)
#也可以用tuple()函数创建元组
>>> b = tuple('abc')
>>> b
('a', 'b', 'c')

【访问】:跟list一样,支持索引和分片访问。

【区别】:元组和列表的区别及适用的地方?

  1、元组可以充当字典中的键,列表则不可

  2、元组不像list那样有内建函数。

三、集合(set) 

【定义】:集合是一组无序的不重复的值

 >>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket) # show that duplicates have been removed
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket # fast membership testing
True
>>> 'crabgrass' in basket
False >>> # Demonstrate set operations on unique letters from two words
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a # unique letters in a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # letters in a but not in b
{'r', 'd', 'b'}
>>> a | b # letters in either a or b
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # letters in both a and b
{'a', 'c'}
>>> a ^ b # letters in a or b but not both
{'r', 'd', 'b', 'm', 'z', 'l'}

四、字典(Dictionaries) 

【定义】字典是一组键值对,其中key可以是数字、字符串、元组。

【创建】用大括号表示,key-value结构,键值之间用冒号隔开,不同的键值对之间通过逗号分隔,如下:

 >>> dict = {'Tome':'','Helen':''}
>>> dict
{'Tome': '', 'Helen': ''}
>>> dict1 = {}
>>> dict1
{}

【基本操作】

  len(dict)返回字典键值对数量

  dict[k]返回key为k的值

  dict[k]改变key为k的值

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

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

  1 #!/usr/python
2
3 people = {
4 'Alice':{
5 'phone':'',
6 'addr':'Foo drive 23'
7 },
8
9 'Beth':{
10 'phone':'',
11 'addr':'Bar street 32'
12 },
13
14 'Cecil':{
15 'phone':'',
16 'addr':'Baz avenue 90'
17 }
18
19 }
20
21 labels = {
22 'phone':'phone number',
23 'addr':'address'
24 }
25
26 name = raw_input('Name: ')
27 request = raw_input('Phone number(p) or address(a)? ')
28 if request == 'p':
29 key = 'phone'
30 if request == 'a':
31 key = 'addr'
32
33 if name in people:
34 print "%s's %s is %s." % (name,labels[key],people[name][key])

运行结果:

 [root@darren python]# python dict.py
Name: Alice
Phone number(p) or address(a)? p
Alice's phone number is 2341.

【方法】

 1、clear()方法:清空字典所有项,原地操作。

 >>> x = {}
>>> y = x #并不是简单的赋值,这里可以理解为x,y共同指向一个字典
>>> x['key']='value'
>>> x
{'key': 'value'}
>>> y
{'key': 'value'}
>>> x = {}
>>> x
{}
>>> y
{'key': 'value'}
 >>> x = {}
>>> y = x
>>> x['key'] = 'value'
>>> x
{'key': 'value'}
>>> y
{'key': 'value'}
>>> x.clear() #注意clear方法清除原地
>>> x
{}
>>> y
{}

2、copy()方法:返回一个相同值得新字典,浅复制

 >>> a = {'username':'admin','machines':['foo','bar']}
>>> b = a.copy()
>>> b['username']='lsls'
>>> b['machines'].remove('bar')
>>> a #替换不能改变值,但是修改可以改变原字典值
{'username': 'admin', 'machines': ['foo']}

可以通过深复制,让原字典保持不变:

 >>> from copy import deepcopy
>>> d = {}
>>> d['name'] = ['aa','bb']
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> dc['name'].append('cc')
>>> d
{'name': ['aa', 'bb']}

3、get(key)方法:通过key访问字典值,如果字典不存在key,不会报错,返回none

4、keys()和iterkeys()方法:keys方法将字典中的键以列表形式返回,而iterkeys则返回针对键的迭代器

5、pop(key)方法:删除指定key的键值项

6、popitem()方法:随机删除一个键值项

7、values()和itervalues()方法:values方法将字典中的键以列表形式返回,而itervalues则返回针对键的迭代器

8、update(item)方法:利用一个字典项更新另一个字典

 >>> d = {'title':'python study','url':'www.python.com'}
>>> x = {'title':'.net study'}
>>> d.update(x)
>>> d
{'url': 'www.python.com', 'title': '.net study'}

至此,python中常用的数据结构就学习的差不多了。

   

第二章 python中重要的数据结构(下)的更多相关文章

  1. [Python笔记][第二章Python序列-复杂的数据结构]

    2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...

  2. 第二章python中的一切皆对象

    1.函数和类也是对象,属于python的一等公民 赋值给一个变量 可以添加到集合对象之中 可以作为参数传递给函数 可以当作函数的返回值 def ask(name="ask_wzh" ...

  3. 第一章 python中重要的数据结构(上)

    最近,由于工作需要,使用python开发公司的运维自动化平台,所以找本书来并结合官方手册,开始python的学习之旅. 一.列表 [含义]:列表用中括号表示,通过逗号进行分隔一组数据(可以为不同的数据 ...

  4. [Python笔记][第二章Python序列-tuple,dict,set]

    2016/1/27学习内容 第二章 Python序列-tuple tuple创建的tips a_tuple=('a',),要这样创建,而不是a_tuple=('a'),后者是一个创建了一个字符 tup ...

  5. 第二章Python入门

    第二章 Python入门 2.1.简介 Python是著名的"龟叔"(Guido van Rossum)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言 Pytho ...

  6. [python笔记][第二章Python序列-list]

    2016/1/27学习内容 第二章 Python序列-list list常用操作 list.append(x) list.extend(L) list.insert(index,x) list.rem ...

  7. Python中的高级数据结构详解

    这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...

  8. Python中的高级数据结构(转)

    add by zhj: Python中的高级数据结构 数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数 ...

  9. 《python解释器源码剖析》第4章--python中的list对象

    4.0 序 python中的list对象,底层对应的则是PyListObject.如果你熟悉C++,那么会很容易和C++中的list联系起来.但实际上,这个C++中的list大相径庭,反而和STL中的 ...

随机推荐

  1. python按行读取apk中版本号、包名等信息

    主要是读apk中manifest.xml中的信息. 读单一apk信息:见“文件”中“apkInfo.xml”.实际运行时,需要将后缀由“.xml”改为“.py". 批量自动获取apk软件信息 ...

  2. Https所涉及名词及相关后缀名解释

    HTTPS: HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即 ...

  3. MySQL:ERROR 1067 (42000): Invalid default value for 'end_time'

    © 版权声明:本文为博主原创文章,转载请注明出处 1.错误截图 2.错误分析 表中的第一个TIMESTAMP列(如果未声明为NULL或显示DEFAULT或ON UPDATE子句)将自动分配DEFAUL ...

  4. could not find class that it depends on; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException

    © 版权声明:本文为博主原创文章,转载请注明出处 1.问题描述 搭建SSH框架启动报错如下: 六月 07, 2017 2:34:34 下午 org.springframework.web.contex ...

  5. HTML5 2D平台游戏开发#7Camera

    在庞大的游戏世界中,玩家不能一览地图全貌,而是只能看到其中一部分,并一步步探索,这时就要用到一种技术来显示局部的地图,游戏术语称为摄像机(Camera).下面两张图中的白色矩形框表示了Camera的作 ...

  6. The best way to predict the future is to invent it,预测未来最好的方法是创造它!

    The best way to predict the future is to invent it,预测未来最好的方法是创造它! ——Smalltalk发明人Alan Kay “预测未来的最好方法, ...

  7. vmware workstation导出ovf

    ovf tool路径 /Applications/VMware Fusion.app/Contents/Library/VMware OVF Tool 上面红色的部分,需要右键点击应用程序中的VMwa ...

  8. Java并发基础:了解无锁CAS就从源码分析

    https://segmentfault.com/a/1190000015881923

  9. WPF使用X:Static做多语言支持

    让程序支持多语言,一般把需要显示的字符串保存在一个资源类的static属性中. <!--[if !supportLists]--> <!--[endif]--> 微软的WPF程 ...

  10. Java final关键字特点

    一.特点 1.由于继承,方法可以重写,所以父类的功能就会被子类覆盖2.有时候我们不想子类覆盖父类的功能,这时候我们可以使用final关键字3.final可以修饰:类.变量,方法.4.final修饰类, ...