快译通哈希表
Python的高效的键/值的哈希表的结构被称为“快译通”。作为一系列关键:一个字典的内容可以写在大括号{值对},例如快译通= {键:值1,KEY2:值2,... ... }。只是一个“空快译通”是一对空大括号{}。
寻找或设置一个值,在一个字典使用方括号,例如快译通['富']查找关键'富'的价值。字符串,数字和元组的工作作为键,和任何类型的值。其他类型的可能或可能无法正常工作键(字符串和元组的工作干净,因为他们是不可改变的)。这不是在字典查找一个值抛出一个KeyError异常 - 使用“中”,来检查的关键是在快译通,或者使用dict.get(键)返回值“或”无“,如果不存在,关键是(或(键,未找到)允许你指定要返回的值中未找到的情况下)。
#建立一个字典空字典{}开始 ,并存储到字典这样的键/值对 :#快译通[关键] =价值的, 关键的dict = { }快译通'A' ] = '阿尔法' 快译通'G' ] = “伽马” 快译通“O” ] = '欧米茄' 打印快译通 ##{'A':“阿尔法”,“O”:“欧米茄”,“ G':“伽马”} 打印快译通[ 'A' ] #简单的查询,返回的“阿尔法 “ 快译通[ 'A ' ] = 6#放入快译通新的键 /值“ 的“ 在 字典# ## 打印的dict ['Z']#抛出KeyError异常 ,如果 'Z' 快译通: 打印的dict [ 'Z' ] #避免KeyError异常 打印快译通。得到('Z' )#没有(而不是KeyError异常)
字典上的一个for循环遍历键的默认情况下。键会出现一个任意顺序。明确的键或值的方法dict.keys()和dict.values()返回列表。还有一个项目()返回一个元组(键,值),这是最有效的的方式来检查字典中的所有键值数据的列表。所有这些列表可以通过排序()函数。
#默认情况下,一个快译通迭代遍历键的。 #请注意,密钥随机顺序。 : 打印键 ##打印前 #究竟一样上面的 键在字典键(): 打印键 ##获取的键()的清单:。 打印快译通。键() ##['A','O',' 克'] ##同样,那里的一个值()列表值 打印快译通值() #[“阿尔法”,“伽马”“欧米茄”] #常见的情况-循环排序顺序键, ##访问每个键/值 对关键排序(快译通。键( )): 打印键,快译通[ 关键] 。#项目()(键,值)元组表示快译通 打印快译通。项目() ##[('A',' 阿尔法'),('O“ ,“欧米茄”)(“G”,“伽马”)] #这个循环的语法访问整个循环的 dict#以上的项目()元组列表,访问一个(键,值 )##对每个迭代 对于 k , V 快译通。项目(): 打印k , '>' V #A>阿尔法Ø>欧米茄G>伽玛
有“国际热核实验堆”的变种称为iterkeys(这些方法),itervalues()和iteritems()避免构建整个清单的成本 - 性能赢得如果数据是巨大的。不过,我一般喜欢纯键()和values()与明智的名称方法。在Python 3000的修订,需要为iterkeys()的变种会消失。
战略说明:从性能的角度来看,字典是你最大的工具之一,你应该使用在那里你可以作为一个简单的方法来组织数据。例如,您可以读取日志文件,其中每行一个IP地址开始,并进入一个关键的IP地址,和值出现的行列表的字典存储数据。一旦你在整个文件中读取,你可以看任何IP地址,并立即看到其行列表。字典在分散的数据,使之成为连贯的东西。
快译通格式
%操作符方便地按名称从字典中的值代入一个字符串:
哈希= {} 哈希[ '字' ] = '加菲猫' 哈希[ '计数' ] = 42 小号= “我希望%(计数)D%副本(字)” %哈希 INT#%d的%1!字符串 “我想42加菲猫副本”
德尔
“删除”操作符删除。在最简单的情况下,它可以删除一个变量的定义,如果该变量没有被定义。德尔也可以使用列表中的元素或片上删除该列表的一部分,并从字典中删除条目。
VAR = 6 DEL VAR #VAR没有更多 的“ = [' ' ,'B ' ,'C ' ,'D ' ] DEL 列表[ 0 ]#删除第一个 元素DEL 列表[ - 2: ]#删除最后两个要素 打印列表 ##['B'] 的dict = { “一个” :1 , 'B' :2 , 'C' :3 } DEL 的dict [ 'B' ] #删除'B'的条目 打印快译通 # {“一”:1,'C':3}
文件
open()函数打开并返回一个文件句柄,可用于读取或写入文件在通常的方式。代码F =打开(“名”,“R”)打开该文件到变量f,准备读操作,并使用f.close()时完成。'R',而是使用写作'W',和'a'为追加。特殊模式“汝”是“普遍”的文本文件的选项,它的智能转换不同的行结束,所以他们总是通过一个简单的'\ n'来。环的标准文本文件,通过遍历文件中的行(这仅适用于文本文件,二进制文件)。for循环技术是一种简单而有效的方式来看看在文本文件中的所有行:
#回声文件的内容 , F = 打开(“foo.txt的“ ,“汝“ )线在 F :#遍历文件中的 行打印线 ,#尾随,所以打印不添加结束行字符 ##“线”以来,已经包含了最终线 。 F 。关闭( )
读一行一次很好的质量,不是所有的文件需要在内存中,以适应在同一时间 - 方便,如果你想在每行10千兆字节的文件,而不去使用10 GB的内存。f.readlines()方法读取整个文件到内存中,作为其行的列表,并返回其内容。f.read()方法读取整个文件到一个字符串,它可以是一种方便的方法,一次与文字处理,如用正则表达式,我们将在后面看到,。
写作,f.write(String)方法是最简单的方式来写数据到一个开放的输出文件。或者你可以使用一个打开的文件“打印”,但讨厌的语法是:“打印>> F,字符串”。在Python 3000中,将固定打印语法=可选的参数:“打印(字符串,文件= F)”文件与普通的函数调用。
文件的Unicode
“编解码器”模块提供支持读取Unicode文件。
进口的编解码器F = 编解码器。打开(“foo.txt的” , “儒” , “UTF - 8” ), f 线 :#此行是* Unicode的字符串
写作,使用f.write(),因为打印不完全支持Unicode。
运动渐进式发展
构建一个Python程序,不写在一个步骤中的整个事情。相反只是一个确定的第一个里程碑,例如:“良好的第一步是提取的单词列表。” 写的代码来获得这一里程碑,并只打印你的数据结构,在这一点上,然后你可以做一个sys.exit(0),所以程序不运行到其未完成的部分。一旦具有里程碑意义的代码工作,你可以对代码工作的下一个里程碑。看一个国家能够在您的变量打印,可以帮助你觉得你需要如何改变这些变量去下一个状态。Python的这种模式是非常快的,让你作一个小的变化和运行程序,看看它是如何工作的。充分利用建立在小步骤,你的程序,快速周转。
练习:wordcount.py
结合所有基本的Python材料-的字符串,列表,dicts,元组,文件-尝试总结 wordcount.py在行使基本练习 。