字典是python中唯一的映射(映射就是对应关系的意思)类型,采用键值对(key:value)的形式存储数据。
python对字典中的key进行哈希计算,根据计算的结果来决定value存储在那个内存空间中,所以也就导致字典的独特的属性:
1、顺序是无序的。
2、key必须在内存中是唯一的且必须是不可变类型
(注:不可变类型有整型、字符串、元组。不可变类型有列表、字典)
3、value可以是任意形式的数据类型
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
1 dic={‘name’:'Adair','age':'28','hobby':['Blue ball','football','volleyball']}
字典的增删改查:
1、增:
1 dic[hobby]='basketball'
这种方法是传统对字典进行增加操作的方法:如果增加的key已经存在,则进行替换,不存在则进行添加。
1 dic['names']='yefei' 2 dic1=dic.setdefault('name','it') 3 print(dic) 4 print(dic1)
使用setdefault方法对字典进行增加操作时,若增加的key已存在,则不会覆盖,返回该key原先的值。若增加的key不存在,则会进行增加,并返回该key的值。
2、查:
查询字典的value是通过key查找:
1 print(dic['name'])
使用keys方法查询字典所有的key:
1 print(dic.keys())
>>>dict_keys(['name', 'age', 'hobby']
使用values方法查询字典中所有的value:
1 print(dic.values())
>>>dict_values(['Adair', 28, ['Blue ball', 'football', 'volleyball']]
使用item方法可以以元组的形式展现的键值对:
1 print(dic.items()) >>>dict_items([('name', 'Adair'), ('age', 28), ('hobby', ['Blue ball', 'football', 'volleyball'])
以上用方法查询的结果都是一种字典特殊的数据类型的展示的,如想对查询结果进行可用list()将其转换成列表的形式。
3、改:
通过key进行修改:
1 dic['name']='xiaohei'
使用update方法对两个字典进行合并,如key有重复则会覆盖:
1 dic1={'a':1,'b':2,'c':3} 2 dic.update(dic1) 3 print(dic) >>>{'name': 'xiaohei', 'age': 28, 'hobby': ['Blue ball', 'football', 'volleyball'], 'a': 1, 'b': 2, 'c': 3}
4、删:
1 del dic #在内存清空整个字典 2 del dic['name'] #删除字典中的某个元素 3 dic.clear() #清空字典中的所有对象 4 dic.pop('name')#删除字典中的某个元素,并返回删除的value值 5 dic.popitem()#随机删除一个元素,并返回删除的value值
字典其他内置方法:
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
1 dic1=dict.fromkeys(['A','B','C'],1) 2 >>>{'A': 1, 'B': 1, 'C': 1} 3 4 dic1['A']='aaa' #只修改指定的一个value值 5 >>>{'A': 'aaa', 'B': 1, 'C': 1} 6 7 dic2=dict.fromkeys(['A','B','C'],[1,2]) 8 >>>{'A': [1, 2], 'B': [1, 2], 'C': [1, 2]} 9 10 dic2['A'][1]=222 #会修改所有key的值 11 >>>{'A': [1, 222], 'B': [1, 222], 'C': [1, 222]}
字典的排序:
根据ASCII码的位置对key进行排序:
1 print(sorted(dic))
根据ASCII码的位置对value进行排序:
1 print(sorted(dic2.values()))
字典遍历:
1 for i in dic3: 2 print(i) #默认遍历的是key 3 4 for i in dic3: 5 print(i,dic3[i]) #通过字典查找的方式遍历出键值对,效率高。 6 7 for i,v in dic3.items(): 8 print(i,v) #通过items方式遍历出键值对,将字典转换成了元组,效率低。