字典的概念:

无序的、可变的、键值对 集合

字典的定义方式:

一共有两种定义方法:

1. {key1: value1, key2: value2}

2.fromkeys函数进行调用——这一方法又可分为类调用(class)和对象调用(value)

类调用:(红色字体是和对象调用的区别之处)

语法:dict.fromkeys(iterable, value)#前面的可迭代对象逐个作为关键词key,每个键所对应的值都相同,都是后面的value

d = dict.fromkeys('abc', 2)
print(d)#输出:{'a': 2, 'b': 2, 'c': 2}
d2 = dict.fromkeys('abc', [1,2,3])
print(d2)#{'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3]}

字典的存在意义:

便于查询相应的值,提高查询效率。

字典的常用操作:

增删改查以及计算、判定


dic = {'name':'jiang', 'age':22}
dic['sex'] = 'male'
#增加
print(dic)#输出:{'name': 'jiang', 'age': 22, 'sex': 'male'}
#删除
del dic['age']
print(dic)#输出:{'name': 'jiang', 'sex': 'male'}
#修改
dic['name'] = 'fan'
print(dic)#{'name': 'fan', 'sex': 'male'}
#查询
print(dic['name'])#输出:fan


删除操作:

1.del 内置函数

语法:del dict[' key ']

2.pop函数

语法:dic.pop(key)

结果:返回指定关键词的值

eg:


dic = {'name':'jiang', 'age':22, 'sex':'male'}
v = dic.pop('sex')
print(v,dic)#输出:male {'name': 'jiang', 'age': 22}


3.popitem()函数

语法:

作用:删除按照最后一个键对,并将删除结果以元组的形式返回。

eg:


dic = {'2':'jiang', '3':'male', '1':22}
v = dic.popitem()
print(v)#输出:('1', 22)


4. clear函数

作用:清除内容,但是字典还在,变成了空字典


dic = {'2':'jiang', '3':'male', '1':22}
v = dic.clear()
print(v)#输出:None
print(dic)#输出:{}


字典的修改:(只能改值,不能改key)

1.修改单个值,dic[' key '] = value

2.批量修改键值对,


dic = {'name':'jiang', 'sex':'male', 'age':22}
dic.update({'age': 18, 'major': 'sta'})
print(dic)#输出:{'name': 'jiang', 'sex': 'male', 'age': 18, 'major': 'sta'}


#如果有相同的key,那就直接修改value,如果没有key,那就增加新键对

字典的查询:

1.获取单个值  2.获取所有值 3.获得所有关键词 4.获取所有键值对  5.遍历

1.获取单个值:


dic = {'name':'jiang', 'sex':'male', 'age':22}
v = dic['name']
print(v)


2.获取所有值:dic.values()

3.获取所有关键词:dic.keys()

4.获取所有键值对:dic.items()

要注意的一点是:2-4这三个函数所返回的结果都是一种称为:“ 字典视图对象 ”的东西,无法根据下标进行索引。


dic = {'name':'jiang', 'sex':'male', 'age':22, 'address':'hubei'} keys = dic.keys() values = dic.values() items = dic.items() print(keys)#输出:dict_keys(['name', 'sex', 'age', 'address']) print(values)#输出:dict_values(['jiang', 'male', 22, 'hubei']) print(items)#输出:dict_items([('name', 'jiang'), ('sex', 'male'), ('age', 22), ('address', 'hubei')]) print(keys[0])#报错:TypeError: 'dict_keys' object is not subscriptable #与python2.x版本相比,3.x版本得到的结果都是视图对象,不能用下标索引,需要转化成列表或者元组后才能操作。 #与2.x版本相比优势在于,即使先进行语句keys = dic.keys()操作后,再对dic字典进行修改,修改后的关键词依旧会链接到keys中,而2.x版本中的keys只是一个单纯的结果;3.x版本中,keys链接到dic这个字典中,dic进行变化,keys也会进行变化。 #处理方法:将视图对象转化为 列表、元组,再进行相应的操作


dic = {'name':'jiang', 'sex':'male', 'age':22}
items = dic.items()
print(items)#输出:dict_items([('name', 'jiang'), ('sex', 'male'), ('age', 22)])
dic.update({'age':18, 'address':'hubei'})

items = list(items)
print(items)#输出:[('name', 'jiang'), ('sex', 'male'), ('age', 18), ('address', 'hubei')],此时也将修改后的结果同步链接到items中,然后以列表的方式打印出来
print(items[0])#输出:('name', 'jiang')

列表的遍历:

遍历的方式主要有两种:一种是按照键(keys)进行遍历,进而得到值;另一种是根据键值对(keys, values)进行遍历

注意:视图对象也是可迭代对象,因此可以进行遍历

eg:


dic = {'name':'jiang', 'sex':'male', 'age':22}
keys = dic.keys()

#遍历关键词key
items = dic.items()
for key in keys:
    print(key)
'''
name
sex
age
'''
#遍历键值对之方式1:直接遍历元组
for item in items:
    print(item)
'''
('name', 'jiang')
('sex', 'male')
('age', 22)
'''
print()
#遍历键值对之方式2:元组拆包遍历,该方法更为常用
for x,y in items:
    print(x,y)
'''
name jiang
sex male
age 22
'''


字典的计算:计算键值对的个数——len函数

字典的判定: in 和not in;判定的对象是判断有无 key