python_字典

字典是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方式遍历出键值对,将字典转换成了元组,效率低。
原文地址:https://www.cnblogs.com/Adairye/p/8507003.html