####一.字典常用方法
**len(dict)?*返回键值对的个数
**dict.clear()?*删除字典中的所有元素
**dict.copy()?*返回字典的一个副本(浅拷贝)
**dict.fromkeys(seq,val=None)?*创建并返回一个新的字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值(默认问None)
**dict.get(key,default=None)?*对字典dict中的键,返回对应的值value,如果字典中不存在此键,则返回默认值
**dict.setdefault(key,default=None)?*和方法set()相似,如果字典中不存在key键,由dict[key]=default为它赋值
**dict.has_key(key)?*如果键在字典中存在,返回True,否则返回False(不建议使用 in 和not in)
**dict.items()?*返回一个包含字典中(键,值)对元组的列表
dict.keys(): 返回一个包含字典中键的列表
**dict.pop(key,default=None)?*如果字典中key键存在,删除并返回dict[key],如果key键不存在,且没有给出default的值,引发KeyError异常
**dict.update(dict2)?*将字典dict2的键值对添加到字典dict(字典中原有的键如果与新添加的键重复,那么重复键锁对应的原有条目的值将被新建对所对应的值所覆盖,原来不存在的条目则被添加到字典中)
**dict.values()?*返回一个包含字典中所有值的列表
二.字典键的简单说明
#####1.不允许一个键对应多个值
一个键对应多个值是不允许的,当有键发生冲突,取最后的赋值.
>>> dict1 = {'foo':'123','foo':'666'}
>>> dict1
{'foo': '666'}
>>> dict1["foo"] = 66666
>>> dict1
{'foo': 66666}
2.键必须是可以被哈希的
所有不可变的类型都是可哈希的,因此它们都可以做为字典的键(元组是不可变的,但用元组做有效键时,必须要加限制:元组中只包括想数字和字符串这样的不可变参数,才可以作为字典中有效的键)
三.范例
字典示例 :管理用于登录系统的用户信息
db = {"kaka":"nom"}
def newuser():
prompt = 'login desired: '
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 ('welcome back', name)
else:
print ("login incorrect")
def showmenu():
prompt = """
(N)ew User Login
(E)xisting User Login
(Q)uit
Enter choice: """
done = False
while not done:
chosen = False
while not chosen:
try:
choice = raw_input(prompt).split()[0].lower()
except (EOFError, KeyboardInterrupt):
choice = 'q'
print '\nYou picked: [%s]' % choice
if choice not in 'neq':
print 'invaild option, try again'
else:
chosen = True
done = True
newuser()
olduser()
if __name__ == '__main__':
showmenu()