字典的特性
不可行的特性: 索引, 切片, 連接, 重複, (因爲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