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