Python字典笔记

1、字典是Python中=唯一的映射类型。映射类型对象里哈希值(键,key)和只指向的对象(值,value)是一对多的关系,一个字典是可变的,是一个容器类型。字典类型和序列类型(元组,列表)的不同在于存储和访问数据的方式不同。序列类型只用数字类型的键。映射类型可以用其他对象类型左键,一般最常见的是用字符串左键。映射类型中的数据是无序排列的。
2、字典用{}来建立,内建函数 dict()  或者一个方便的内建函数fromkey()可以创建一个‘默认’字典,字典里元素具有相同的值。
ddict={}.fromkey(('x','y'),1)
ddict:{'y':1,'x':1}
访问:dict1={'name':'earth','port':80}
>>> for key in dict1:
    print ('key=%s, value=%s' %(key,dict1[key]))
key=name, value=earth
key=port, value=80
 3、字典是可变的,但是字典里面的键不允许改变!
4、如何更新字典:你可以 添加一个新数据项或新元素(键值对);修改一个已经存在的数据项,或者删除一个已经存在的数据项。
5.字典的比较算法:先比较字典的大小,然后是键,最后是值。
6.update()方法可以将一个字典的内容添加到另外一个字典中。字典中原来有的键与新添加的键重复,重复的键所对应的内容被新建所对应的内容覆盖掉。原来不存在的条目会添加到字典中。
setdefault()方法:检查字典中是否存在某键,若存在,则可以取到它的值,如果找不到,你可以给这个键赋默认值并返回该值。
key()  items()  values()都是其内建函数,返回的都是列表
7、字典的键:
(1)不允许一个键对应多个值
(2)键必须是可哈希的,像列表和字典这样可变类型,是不可哈希的,因此不能作为键。所有的不变类型都是可哈希的。
 例子:管理用户名和密码的模拟登陆数据系统
db={}
def newuser():
    prompt='login desired:'
    while True:
        username=input(prompt)
        if username in db:
            prompt='name taken,try another:'
            continue
        else:
            break
    password=input('please enter password:')
    db[username]=password

def olduser():
    username=input('please enter username:')
    password=input('please enter password:')
    psw=db.get(username)
    if password==psw:
        print ('Welcome back %s' % username)
    else:
        print ('login incorrect!')
def showmenu():
    prompt='''
     (N)ew User Login
     (O)ld User Login
     (Q)uit
     Please enter your choice
    '''
    done=False
    while not done:
        chosen=False
        while not chosen:
            try:
                choice=input(prompt).strip()[0].lower()
            except (EOFError,KeyboardInterrupt):
                choice='q'
            print ('
You picked:[%s]' %choice)
            if choice not in 'noq':
                print ('Invaild option, try again ')
            else:
                chosen='True'
        if choice=='q':
            done=True
        if choice=='n':
            newuser()
        if choice=='o':
            olduser()

if __name__=='__main__':
    showmenu()
原文地址:https://www.cnblogs.com/itdyb/p/5387767.html