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()

猜你喜欢

转载自blog.csdn.net/weixin_37038498/article/details/74182309