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 ('\nYou 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()