#20100802
#字典 字典不是序列,二是一种映射,映射是一个其他对象的集合,但是它们是通过键而不是对应位置来存储的。字典是Python核心对象集合中的唯一的一种映射类型,也具有可变性--可以改变,并可以随需求增大或减小,就想列表那样
#"键:值 对应"
D = {'food':'pig','quantity':4,'color':'pink'}
#通过键,对这个字典进行索引来读取或改变键所关联的值。字典的索引操作使用的是和序列相同的语法,但是在方括号中的元素是键,而不是相对位置
print D['food']
D['quantity'] += 1
print D
#填充空字典
F = {}
F['name'] = 'alice'
F['job'] = 'dev'
F['age'] = 27
print F
print F['name']
F['name'] = 'bob'
print F['name']
F['name'] += 'stu123'
print F['name']
#重访嵌套==========================
#一次性将多有的内容编写进一个常量,将可以记录更多的结构信息
rec = {'name':{'fist':'jerry','last':'bob'},
'job':['technical','system_linux'],
'age':26}
print rec['name']
print rec['name']['fist']
print rec['job']
print rec['job'][0]
rec['job'].append('mnott')
print rec
#键的排序 for 循环======================
#在字典元素中,我们确实需要强调一个顺序的时候,应该怎么做?
#通过字典的keys方法收集一个键的列表,并使用sort方法,然后使用Python的for循环逐个显示结果
D = {'a':'1','b':'2','c':'3'}
print D
#1、
Ks = D.keys()
print Ks
#2、
Ks.sort()
print Ks
#3、
for key in Ks:
print key, '=>', D[key]
for mi in 'qiang':
print mi.upper()
#sorted内置函数的使用 上面的三个步骤可以分为一个步骤完成
#sorted返回结果并且对对象类型进行排序,可一步完成:
print D
for key in sorted(D):
print key, '=>', D[key]
#=====迭代和优化=====
#Python的工作遵守迭代协议,
S = [2,4,6,8,10]
squares = [m ** 2 for m in S]
print squares
squares = [m ** 2 for m in [1,3,5,7,9]]
print squares
squares = []
for i in S:
squares.append(i * 5)
print squares
#不存在的键 if 测试============
print D
D['e'] = 99
print D
print D['e']
#获取一个并不存在的东西往往是一个错误的程序
#首先进行测试,字典的has_key发放允许我们查询一个键的存在性,并可以通过使用python的if语句对结果进行分支处理
print D.has_key('e')
print D.has_key('f')
if not D.has_key('f'):
print 'missing'
#元组====================
#元组对象基本上就像一个不可改变的列表。就像列表一样,元组是序列,但是它具有不可变性,和字符串类似
T = (5,6,7,8,8)
print len(T)
print T + (8,9)
print T[0]
print T[-1]
print T
#元组的真正不同之处就在于一旦创建后就不能再改变。也就是说元组是不可改变的序列。
#元组提供了一种完整性的约束。
#文件============
#文件对象是Python代码对电脑上外部文件的主要接口。虽然文件时可心类型,但是它有些特殊:没有特定的常量语法创建文件。
#调用内置open函数创建一个文件对象,以字符串的形式传递给它一个外部文件名以及一个处理模式的字符串。
#创建一个输出文件,可以传递其文件名以及‘w’处理模式字符串写
#====================创建,并读取一个文件============================
f = open('data.txt','w')
f.write('Hello World/n')
f.write('Hao old are you')
f.close()
f = open('data.txt')
nn = f.read()
print nn
print nn.split()
#Readline的使用方式,每次读取一行
f = open('data.txt')
line = f.readline()
print line
print line.split()
#其它核心类型:
#集合是通过内置set函数而创建的对象容器,它支持一般的数学集合操作
X = set('spam')
Y = set(['h','a','s'])
print X,Y
print X&Y
print X|Y
print X-Y
#十进制数,和布尔值-=====================
d = decimal.Decimal('3.151')
print d + 1
print 1>2,1<2
print (1>2,1<2)
print bool('spam')
X = None
print X
L = [None] * 5
print L
#查看文件类型 type函数和Linux有些类似
print type(L)
Y = 123
print type(Y)
#对象类型可以让代码检验它所使用的对象的类型。三种方法:
print L
if type(L) == type([]):
print 'yes'
if type(L) == list:
print 'yes'
if isinstance(L,list):
print 'yes'
#判断data.txt是否为文件
if isinstance(open('data.txt'),file):
print 'yes'