Python基础---字典dict{}


一、概述


1.字典是一个无序的,可以修改的,元素呈键值对的形式,以逗号分割的,以大括号包围的序列。

2.字典是python基础数据类型当中唯一一个映射关系的数据类型。

3.由于字典无序,所以我们定义字典和字典生成之后的元素的顺序是不同的。

4.字典的格式: key:value 键值对     变量名={key1:value1,key2:value2,.......}

   平常我们生活中字典非常常见,一般都是由一些如偏旁部首或是拼音首字母等来查相关的字的,当我们查字典时用到的前几页

   中的偏旁部首或拼音首字母就相当于这里的key,而查到的字就是value。

5.注意:使用的符号都是英文,一定定义变量的时候不能定义成dict ;

             字典的key只能是不可变数据类型,而value可以为任意数据类型 ;

             不可变数据类型(可哈希数据类型,就是用哈希算法算出来的数据类型), 可变数据类型(不可哈希数据类型)。

6.说明:字典和列表一样,也能够存储多个数据,字典中的值并没有特殊顺序;

              列表中找某个元素时,是根据下标进行的,如果下标很多,查找数据不方;

              当索引不好用时,使用字典,字典中找某个元素时字典的每个元素由2部分组成,键:值。

              例如 'name':'班长' ,'name'为键,'班长'为值,字典由键值组成。


二、字典操作


1.创建字典

dic={'name':'zs','age':19,'sex':'男'}
print(dic)
print(type(dic))
dic1={'name':'azy',23:'dcv',(1,2):'lyc'}
print(dic1)
#dic2={['name','sg']:'azy',23:'dcv',(1,2):'lyc'}
#TypeError: unhashable type: 'list'
{'name': 'zs', 'age': 19, 'sex': '男'}
<class 'dict'>
{'name': 'azy', 23: 'dcv', (1, 2): 'lyc'}

2.增加操作

(1)dic.setdefault()增加操作时,如果键在字典中已经存在了,就不会覆盖字典中的值,如下第三行代码是不会对原字典的weight值进行改变的,仍为120。

dic.setdefault('weight',120)
print(dic)
dic.setdefault('weight',140)
print(dic)
{'name': 'zs', 'age': 19, 'sex': '男', 'weight': 120}
{'name': 'zs', 'age': 19, 'sex': '男', 'weight': 120}

(2)根据key来设置value,若key存在就覆盖掉原来的值。

dic['weight']=140
print(dic)
dic['weight']=135
print(dic)
{'name': 'zs', 'age': 19, 'sex': '男', 'weight': 140}
{'name': 'zs', 'age': 19, 'sex': '男', 'weight': 135}

3.删除操作

(1)根据key进行删除,删除一个键值对

dic.pop('sex')
print(dic)
{'name': 'zs', 'age': 19, 'weight': 135}

(2)随机删除一个键值对

dic.popitem()
print(dic)
{'name': 'zs', 'age': 19}

(3)清空字典中的键值对,使字典成为一个空字典dic={}

dic.clear()
print(dic)

(4)直接从内存中删除字典类型的变量,打印结果会报错

del dic
print(dic)

4.修改操作

(1)根据key来修改value

dic['name']='mm'
print(dic)
{'name': 'mm', 'age': 19}

(2)利用update方法来修改

dic2={'name':'baibai','age':20,'weight':120}
dic.update(dic2)
print(dic)
{'name': 'baibai', 'age': 20, 'weight': 120}

5.查找操作

(1)根据key来获取对应的value,可定义一个变量接收返回的值

v=dic.get('name')
print(v)
baibai

(2)获取所有的key,并返回所有key组成的列表


k=dic.keys()
print(k)
dict_keys(['name', 'age', 'weight'])

(3)获取所有的value,并返回所有的value组成的列表


v1=dic.values()
print(v1)
dict_values(['baibai', 20, 120])

(4)以元组的的形式返回字典中的每一个键值对

v2=dic.items()
print(v2)
print(type(v2))
dict_items([('name', 'baibai'), ('age', 20), ('weight', 120)])
<class 'dict_items'>

(5)获取键值对的个数并返回键值对的个数

v3=len(dic)
print(v3)
3

(6)利用元组以及fromkeys方法生成字典

tup=(1,2,3)
ret=dic.fromkeys(tup)
print(ret)
ret2=dic.fromkeys(tup,'aa')
print(ret2)
{1: None, 2: None, 3: None}
{1: 'aa', 2: 'aa', 3: 'aa'}

6.in 和 not in

          in

判断指定的键是否在字典当中,即将被废除,之后我们python3用in

for.......in.......

通过for ... in ...:的语法结构,我们可以遍历字符串、列表、元组、字典等数据结构。

not      in

判断指定的键是否不在字典当中

if 'name' in k:
    dic['name']='jx'
else:
    dic['name']='ngls'
print(dic)
if 'height' not in k:
    dic['height']=180
else:
    dic['height']=160
print(dic)
s1=dic.get('sex',1)
print(s1)
for i in k:
    print(i)
for key in dic:
    print(key)
for item in dic.items():
    print(item)
for key,value in dic.items():
    print(key,value)

三、字典的特点


因为字典是无序的,所以字典没有索引值;

因为字典没有索引值,所以字典以键取值,(字典的键相当于列表的索引);

因为字典以键取值,所以字典的键唯一且不可修改;

因为字典的键不可修改,所以列表和字典等可变类型的数据不可以给字典做键。

猜你喜欢

转载自blog.csdn.net/weixin_44239385/article/details/85345123