字典dict
字典使用键-值(key-value)存储,在一个字典中键必须相互不同。
字典具有很快的速度,因为使用了key-value存储方式,在放进去的时候会根据key算出vlaue的存放位置,这样根据key可以直接定位到value。
序列是以连续的整数为索引,与字典不同的是,字典以关键字为索引,关键字可以是任意不可变对象(不可修改),通常是字符串或数值,这也保证了value的存储位置不会变化。
由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉。
需要占用大量的内存,内存浪费多。
一、定义字典
>>> name={‘zhangsan‘:90,‘lisi‘:80,‘wangwu‘:70}
使用大括号括起来,键和值用冒号分隔,多个键-值用逗号分隔,一个键只能对应一个值。
二、基本操作
#返回所有键值
>>> name.items() [(‘lisi‘, 80), (‘zhangsan‘, 90), (‘wangwu‘, 70)]
#返回所有键
>>> name.keys() [‘lisi‘, ‘zhangsan‘, ‘wangwu‘]
#返回所有值
>>> name.values() [80, 90, 70]
注意:以上返回的结果都是以列表的形式
#添加键值
>>> name[‘zhaoliu‘]=60 >>> name {‘lisi‘: 80, ‘zhaoliu‘: 60, ‘zhangsan‘: 90, ‘wangwu‘: 70}
#获取单个键的值
>>> name[‘zhangsan‘] 90
注意:如果这个键不存在就会输出 KeyError 错误
>>> name.get(‘zhangsan‘) 90
注意:如果这个键不存在,输出结果为空。
#删除指定指定的键值
>>> name.pop(‘zhangsan‘) 90 >>> name {‘lisi‘: 80, ‘zhaoliu‘: 60, ‘wangwu‘: 70}
#删除第一个键值
>>> name.popitem() (‘lisi‘, 80) >>> name {‘zhaoliu‘: 60, ‘wangwu‘: 70}
#把其他字典的键值添加到本字典中
>>> name {‘zhaoliu‘: 60, ‘wangwu‘: 70} >>> name1={‘jerry‘:88,‘mike‘:66} >>> name.update(name1) >>> name {‘mike‘: 66, ‘zhaoliu‘: 60, ‘jerry‘: 88, ‘wangwu‘: 70}
#拷贝为一个新的字典
>>> name2=name.copy() >>> name2 {‘mike‘: 66, ‘zhaoliu‘: 60, ‘jerry‘: 88, ‘wangwu‘: 70}
注意:name2不会随着name变化
>>> name3=name >>> name3 {‘mike‘: 66, ‘zhaoliu‘: 60, ‘jerry‘: 88, ‘wangwu‘: 70}
注意:name3会随着name进行变化
#判断字典中是否有这个键
>>> name.has_key(‘wangwu‘) True >>> name.has_key(‘fjc‘) False
#如果字典中有这个键,就返回对应的值,没有则添加这个键到字典中,值默认为None
>>> name {‘mike‘: 66, ‘zhaoliu‘: 60, ‘jerry‘: 88, ‘wangwu‘: 70} >>> name.setdefault(‘mike‘) 66 >>> name.setdefault(‘mike‘,66) 66 >>> name.setdefault(‘mike‘,77) 66 >>> name {‘mike‘: 66, ‘zhaoliu‘: 60, ‘jerry‘: 88, ‘wangwu‘: 70} >>> name.setdefault(‘fjc‘) >>> name {‘mike‘: 66, ‘fjc‘: None, ‘zhaoliu‘: 60, ‘jerry‘: 88, ‘wangwu‘: 70} >>> name.setdefault(‘miss‘,50) 50 >>> name {‘mike‘: 66, ‘fjc‘: None, ‘zhaoliu‘: 60, ‘miss‘: 50, ‘jerry‘: 88, ‘wangwu‘: 70}
注意:.setdefault()的括号中可以同时包含键和值。
#根据一个列表生成字典中的键,值都为None
>>> lst=[1,2,3,4,5] >>> dic={}.fromkeys(lst) >>> dic {1: None, 2: None, 3: None, 4: None, 5: None}
#清空字典
>>> dic.clear() >>> dic {}
#字典迭代器
.iteritems() # 获取所有键值
.iterkeys() # 获取所有键
.itervalues() # 获取所有值
>>> a=name.iteritems() >>> a.next() (‘mike‘, 66)
注意:多次执行.next()可以一一列出键值
#一个键多个值
就是将值改成列表、元组或字典
>>> b={‘a‘:[1,2,3],‘b‘:2} >>> c={‘a‘:(1,2,3),‘b‘:2} >>> d={‘a‘:{‘c‘:3,‘d‘:4},‘b‘:2}
时间: 2024-10-10 14:58:59