字典是python中唯一的映射類型,採用鍵值對(key-value)的形式存儲數據。python對key進行哈希函數運算,根
據計算的結果決定value的存儲地址,所以字典是無序存儲的,且key必須是可哈希的。可哈希表示key必須是不可
變類型,如:數字、字符串、元組。
字典(dictionary)是除列表意外python之中最靈活的內置數據結構類型。列表是有序的對象結合,字典是無序的對
象集合。兩者之間的區別在於:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。
創建字典:
>>> dic1={'name':'n','age':36,'sex':'male'}
>>> dic2=dict((('name','n'),))
>>> print(dic1) #{'name': 'n', 'age': 36, 'sex': 'male'}
>>> print(dic2) #{'name': 'n'}
對應操作:
1 增
>>> dic={}
>>> dic['name'] = 'n'
>>> dic['age'] = 18
>>> print(dic) # {'name': 'n', 'age': 18}
#setdefault() 函數和get() 方法類似, 如果鍵不存在於字典中,將會添加鍵並將值設爲默認值。
>>> a = dic.setdefault('name', 'yuan')
>>> b = dic.setdefault('ages', 22)
>>> b = dic.setdefault('ages', 22)
>>> c = dic.setdefault('hobby', "girl")
>>> print(a, b, c) # n 22 girl
>>> print(dic) # {'name': 'n', 'age': 18, 'ages': 22}
2 查
>>> dic= {'name': 'n', 'age': 18}
>>> print(dic['name']) # n
#get() 函數返回指定鍵的值,如果值不在字典中返回默認值。
>>> print(dic.get('age',False)) # 18
>>> print(dic.get('ages',False)) # False
>>> print(dic.items()) # dict_items([('name', 'n'), ('age', 18)])
>>> print(dic.keys()) # dict_keys(['name', 'age'])
>>> print(dic.values()) # dict_values(['n', 18])
>>> print('name' in dic) # True
>>> print(list(dic.values())) # ['n', 18]
3 改
>>> dic = {'name': 'n', 'age': 18}
>>> print(dic) # {'name': 'n', 'age': 18}
>>> dic['name'] = 'al'
>>> print(dic) # {'name': 'al', 'age': 18}
>>> dic1 = {'sex': 'male', 'hobby': 'girl', 'age': 36}
#update()方法添加鍵 - 值對到字典dict1。此函數不返回任何值。
>>> dic.update(dic1)
>>> print(dic) # {'name': 'al', 'age': 36, 'sex': 'male', 'hobby': 'girl'}
4 刪
>>> dic = {'name': 'n', 'age': 18, 'class': 1}
>>> #dic.clear() # 清空字典
>>> #print(dic) # {}
>>> del dic['name'] #del 根據鍵刪除
>>> print(dic) # {'age': 18, 'class': 1}
>>> a = dic.popitem()
>>> print(a, dic) # ('class', 1) {'age': 18}
>>> print(dic.pop('age')) # 18
>>> print(dic) # {}
>>> del dic # 刪除整個dic
>>> print(dic) #NameError: name 'dic4' is not defined
5 其他操作以及涉及到的方法
5.1 dict.fromkeys
#fromkeys()方法從序列鍵和值設置爲value來創建一個新的字典。
>>> d1=dict.fromkeys(['host1','host2','host3'],'Mac')
>>> print(d1) #{'host1': 'Mac', 'host2': 'Mac', 'host3': 'Mac'}
>>> d1['host1']='xiaomi'
>>> print(d1) #{'host1': 'xiaomi', 'host2': 'Mac', 'host3': 'Mac'}
>>> d2=dict.fromkeys(['host1','host2','host3'],['Mac','huawei'])
>>> print(d2) # {'host1': ['Mac', 'huawei'], 'host2': ['Mac', 'huawei'], 'host3': ['Mac', 'huawei']}
>>> d2['host1'][0]='xiaomi'
>>> print(d2) #{'host1': ['xiaomi', 'huawei'], 'host2': ['xiaomi', 'huawei'], 'host3': ['xiaomi', 'huawei']}
5.2 d.copy() 對字典 d 進行淺複製,返回一個和d有相同鍵值對的新字典
>>> dic1=dic.copy()
>>> print(dic) # {'name': 'n', 'age': 18, 'class': 1}
>>> print(dic1) # {'name': 'n', 'age': 18, 'class': 1}
>>> dic1['name']='n1'
>>> print(dic) # {'name': 'n', 'age': 18, 'class': 1}
>>> print(dic1) # {'name': 'n1', 'age': 18, 'class': 1}
5.3 字典的嵌套
>>> {
>>> '北京':{
>>> '朝陽':{
>>> '國貿':{
>>> 'CICC':{},
>>> 'HP':{},
>>> },
>>> '望京':{
>>> '沫沫':{},
>>> },
>>> },
>>> '昌平':{
>>> '沙河':{
>>> '老男孩':{},
>>> '包子':{},
>>> },
>>> '鏈家':{},
>>> '我愛我家':{},
>>> },
>>> '回龍觀':{},
>>>
>>> },
>>> },
>>> '上海':{
>>> '浦東':{
>>> '陸家嘴':{
>>> 'cicc':{},
>>> '高盛':{},
>>> },
>>> '外灘':{},
>>> },
>>> '閔行':{}
>>> },
>>> }
5.4 sorted(dict) : 返回一個有序的包含字典所有key的列表
>>> dic={5:'555',2:'222',4:'444'}
>>> print(dic) #{5: '555', 2: '222', 4: '444'}
#sorted() 函數對所有可迭代的對象進行排序操作。
sort 與 sorted 區別:
#sort 是應用在 list 上的方法,sorted 可以對所有可迭代的對象進行排序操作。
#list 的 sort 方法返回的是對已經存在的列表進行操作,而內建函數 sorted 方法返回的是一個新的 list,
#而不是在原來的基礎上進行的操作。
>>> print(sorted(dic)) #[2, 4, 5]
5.5 字典的遍歷
>>> dic5 = {'name': 'n', 'age': 18}
>>> for i in dic5:
>>> print(i, dic5[i]) # name n age 18
>>> for items in dic5.items():
>>> print(items) # ('name', 'n') ('age', 18)
>>> for keys, values in dic5.items():
>>> print(keys, values) # name n age 18
還用我們上面的例子,存取這個班學生的信息,我們如果通過字典來完成,那:
>>> dic={'zhangsan':{'age':23,'sex':'male'},
>>> '李四':{'age':33,'sex':'male'},
>>> 'wangwu':{'age':27,'sex':'women'}
>>> }
>>> print(dic) #dic={
#'zhangsan':{'age':23,'sex':'male'},'
# 李四':{'age':33,'sex':'male'},
# 'wangwu':{'age':27,'sex':'women'}
#}
pythopn Dictionary(字典)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.