字典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}
转载于:https://blog.51cto.com/fengjicheng/1927625