字典的特性
不可行的特性: 索引, 切片, 连接, 重复, (因为dict是无序的数据类型;)
可行的特性: 成员操作符;
为什么需要字典类型?
>>> list1 = ["name", "age", "gender"]
>>> list2 = ["fentiao", 5, "male"]
>>> zip(list1, list2)
//通过zip内置函数将两个列表结合,help(zip)
[('name', 'fentiao'), ('age', 5), ('gender', 'male')]
>>> list2[0]
//在直接编程时,并不能理解第一个索引表示姓名
'fentiao'
>>> list2[name]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not str
故字典是python中唯一的映射类型,key-value(哈希表),字典对象是可变的,但key必须用不可变对象。
1.字典的定义
字典的创建
创建字典的三种方式;
hash哈希 ====== 字典dict
dict = {}
print type(dict)
1)字典的简单版定义1:
d = {
# :前面的称为键,key
# :后面的称为值,value
# 键值对(key-value)
'name': 'root',
'passwd':'westos'
}
print d['name']
print d['passwd']
字典的升级版定义:
info = {
'root':{
'name': 'root',
'passwd':'westos',
'age':18,
'eamil':['[email protected]', '[email protected]']
},
'student': {
'name': 'student',
'passwd': 'westos',
'age': 18,
'eamil': ['[email protected]', '[email protected]']
},
}
print info['root']
2)通过工厂函数创建字典
d = dict()
print type(d)
d = dict(a=1, b=2, c=3)
print d, type(d)
3)fromkeys方法创建字典 ##默认valie值为none,可一次给多个key值赋value
d = {}.fromkeys(['user1', 'user2', 'user3'])
print d
d = {}.fromkeys(['user1', 'user2', 'user3'],"123")
print d
2.字典值的查看
In [32]: d.keys() ##key值
Out[32]: ['a', 'b', 'f']
In [33]: d.values() ##value值
Out[33]: [1, 2, 10]
In [34]: d.items() ##key-value对
Out[34]: [('a', 1), ('b', 2), ('f', 10)]
In [35]: for i,j in d.items():
...: print i,j
...:
a 1
b 2
f 10
In [36]: d.has_key('a') ##子成员判断
Out[36]: True
3.字典key-value的添加
1)update(key=value, …..)
- 如果key值存在, 更新该key对应的value值;
- 如果key不存在, 添加key-value值;
2)setdefault(key,value)
- 如果key值存在, 不操作;
- 如果key不存在, 添加key-value值;
4.字典的改动
字典名[key]=value
d.update({'a':2, 'b':3})
d.update(a=2, b=3)
5.字典的删除
1)dic.pop(key) ##根据key值删除字典的元素;
pop(k[,d]):
- 如果key存在, 删除key-value;
- 如果key不存在,判断d是否存在:
- 如果d不存在, 报错KeyError;
- 如果d存在, 返回d;
In [26]: d
Out[26]: {'a': 1, 'b': 2}
In [32]: d.keys()
In [41]: d.pop('e', 1)
Out[41]: 1
In [42]: d
Out[42]: {'a': 1, 'b': 2, 'f': 10}
In [43]: d.pop('a')
Out[43]: 1
In [44]: d
Out[44]: {'b': 2, 'f': 10}
In [45]: d.pop('b', 10)
Out[45]: 2