python字典相关

####一.字典常用方法

**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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值