python字典类型举例_python字典类型用法举例

字典是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,否则返回False。python2.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()是字符串处理函数,这个地方用来删除字符串首尾的空白符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值