4.基本数据类型字典
概述
用过java中的字典的人对Hashtable应该不会陌生,Python里的哈希表就是字典(dict)了。与set类似,字典是一种无序存储结构,它包括关键字(key)和关键字对应的值(value)。java程序员需要了解的就是,在Python中dict是一种内置的数据类型,定义方式为:
#当有多个键值时,用逗号进行分割。
dictionary={key:value}
字典里的关键字为不可变类型,如字符串、整数、只包含不可变对象的元组,列表等不能作为关键字。字典中一个键只能与一个值关联,对于同一个键,后添加的值会覆盖之前的值。学过数据结构的人对字典的散列查找效率应该都有认识,所以我建议在可能的情况下尽量多用字典,其它的就不多写了。
#-*-coding:utf-8-*-
import sys
if __name__=="__main__":
dict={"a":"apple","b":"banana","g":"grape","o":"orange"}
print dict
print dict["a"]
dict2={1:"apple",2:"banana",3:"grape",4:"orange"}
print dict2
print dict2[1]
#-*-coding:utf-8-*-
import sys
if __name__=="__main__":
#字典的添加、删除、修改操作
dict={"a":"apple","b":"banana","g":"grape","o":"orange"}
dict["w"]="watermelon"
print dict
del(dict["a"])
print dict
print dict.pop("b")
#dict.clear()
#print dict
#字典的遍历
for k in dict:
print "dict[%s]="%k,dict[k]
#-*-coding:utf-8-*-
import sys
if __name__=="__main__":
#字典的keys()与values()方法
dict={"a":"apple","b":"banana","g":"grape","o":"orange"}
#输出key的列表
print dict.keys()
#输出values的列表
print dict.values()
#-*-coding:utf-8-*-
import sys
def Main():
D={'food':'spam','quantity':4,'color':'pink'}
print D['food']
D['quantity']+=1
print D
#另外一种定义字典的方法
D={}
D['name']='Bob'
D['job']='dev'
D['age']=40
print D
#使用键值,进行排序
D={'a':1,'b':2,'c':3}
print D
Ks=D.keys()
print Ks
Ks.sort()
print Ks
for key in Ks:
print key,'=>',D[key]
for key in sorted(D):
print key,'=>',D[key]
#迭代与优化
squares=[x ** 2 for x in [1,2,3,4,5]]
print squares
#与以下代码是等效的
squares=[]
for x in [1,2,3,4,5]:
squares.append(x**2)
if __name__=="__main__":
Main()
在访问的时候,如果这个键值不存在的话,如果我们没有做任何判断的话,会出现错误,这个时候我们可以用以下代码来进行判断。
#-*-coding:utf-8-*-
import sys
def Main():
D={'food':'spam','quantity':4,'color':'pink'}
#测试不存在的键值
if not D.has_key('f'):
print '不存在这个键值'
else:
print D['f']
if __name__=="__main__":
Main()
常用方法
- has_keys(x) 若字典中有x返回true
- keys() 返回键的列表
- values() 返回值的列表
- dict.items() 返回tuples的列表。每个tuple有字典的dict的键和相应的值组成
- clear() 删除词典的所有条目
- copy() 返回字典的高层结构的拷贝,但不复制嵌入结构,而复制那些结构的引用。
- update(x) 用字典x中的键/值对更新字典的内容。
- get(x[,y]) 返回键x。若未找到返回None