pythopn Dictionary(字典)

字典是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'} 
                                                                             #}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章