python字典类型用法举例

来源:互联网 发布:杭州淘宝模特经纪公司 编辑:程序博客网 时间:2024/04/29 16:22

字典python语言中唯一的映射类型,用花括号{}表示,一个字典条目就是一个键值对,方法keys()返回字典的键列表,values()返回字典的值列表,items()返回字典的键值对列表。字典中的值没有任何限制,它们可以是任意python对象,但字典中的键是有类型限制的,每个键只能对应一个值,且键必须是可哈系的,所有不可变类型都是可哈希的。不可变集合frozenset的元素可作为字典的键,但可变集合set就不行了。


以下是字典类型的常用方法

clear():删除字典中所有元素。

copy():返回字典(浅复制)的一个副本。

fromkeys(seq,val=None):创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值。

get(key,default=None):返回字典中的键key对应的值value,如果字典中不存在此键,则返回default的值。

has_key(key):如果键key在字典中存在,返回True,否则返回Falsepython2.2后这个方法几乎已废弃不用了,通常用in来替代。

items():返回一个包含字典中键值对元组的列表。

keys():返回一个包含字典中键的列表。

iter():方法iteritems()iterkeys()itervalues()与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表。

pop(key[,default]):和方法get()类似,如果字典中key键存在,删除并返回dict[key],如果key键不存在,且没有给出default的值,引发KeyError异常。

setdefault(key,default=None):和方法get()相似,如果字典中不存在key键,由dict[key]=default为它赋值。

update(dict2):将字典dict2的键值对添加到当前字典中。

values():返回一个包含字典中所有值的列表。


下面以一个模拟用户登录的数据系统为例介绍字典的用法。

#!/usr/bin/env python db = {} def newuser(): prompt = 'register: ' while True: name = raw_input(prompt) if db.has_key(name): prompt = 'name taken, try another: ' continue else: break pwd = raw_input('passwd: ') db[name] = pwd  def olduser(): name = raw_input('login: ') pwd = raw_input('passwd: ') passwd = db.get(name) if passwd == pwd: print 'login success:', name else: print 'login failure' def showmenu(): prompt = """ (R)eister (L)ogin (Q)uit Enter choice: """ done = False while not done: chosen = False while not chosen: try: choice = raw_input(prompt).strip()[0].lower() except (EOFError, KeyboardInterrupt): choice = 'q' print '\nYour choice: [%s]' %choice if choice not in 'rlq': print 'invalid option, try again' else: chosen = True if choice == 'r': newuser() elif choice == 'l': olduser() else: done = True if __name__ == '__main__': showmenu()

脚本第三行初始化一个空的db字典,第9行通过has_key()判断新注册的用户名(字典的key)是否存在,第15行通过方括号[]给一个用户名添加密码(即给一个键添加值),第20行通过get()获取用户名对应的密码(即与字典的key对应的value)。第38行的strip()是字符串处理函数,这个地方用来删除字符串首尾的空白符。



1 0