目录
1、什么是字典
Python内置的数据结构之一,与列表一样是一个可变序列(可变序列就是可以执行增、删、改操作,不可变序列举例:字符串、整数序列)
以键值对的方式存储数据,字典是一个无序的序列(无序,即你第一个放进字典里面的它不一定放在第一个位置)
理解图示:
2、字典示意图:
这里的key代表放的先后顺序,即key1代表第一个放进字典里的键,由图可知,key1并没有在第一个位置,这是因为我们在字典中存储数据的时候他要经过一个工序:在hash(key)函数中计算,所以他的位置是计算出来的
3、字典的实现原理
字典的实现原理与查字典类似,查字典是先根据部首或拼音查找应的页码,Python中 的字典是根据key查找value所在的位置
4、字典的创建
最常用的方式:使用花括号
scores={ '张三 ': 100, '李四' : 98,'王五': 45 }
使用内置函数dict()
dict( name='jack' , age=20 )
注意:使用花括号时冒号左边的要加上‘’,使用dict()内置函数则不用,但冒号右边加不加符号就看是什么数据类型
例子:
'''字典的创建方式'''
'''使用{}创建字典'''
scores={'张三':100,'李四':98,'王五':45}
print(scores)
print(id(scores))
'''第二种方式dict()'''
student=dict(name='jack',age=20)
print(student)
'''字典'''
d={} #即一个空字典
print(d)
输出结果:
5、字典中元素的获取
6、[]取值与使用get()取值
区别
①0如果字典中不存在指定的key,抛出keyError异常
②get()方法取值,如果字典中不存在指定的key, 并不会抛出KeyError而是返回
None,可以通过参数设置默认的value,以便指定的key不存在时返回
例子:
scores={'张三':100,'李四':98,'王五':45}
'''第一种方式,使用[]'''
print(scores['张三'])
#print(scores['陈六']) #KeyError 会抛出异常,因为查找的不存在
'''第二种方式,使用get()方法'''
print(scores.get('张三'))
print(scores.get('陈六')) #None ,即使查找对象不存在不也会抛出异常
print(scores.get('麻七',99)) #99是在查找’麻七‘所在的value不存在时,提供的一个默认值
输出结果:
7、字典的常用操作
(1)key的判断
(2)字典元素的删除
del scores[ '张三' ]
(3)字典元素的新增
scores[ 'Jack']= 90
例子:
'''键的判断'''
print('张三' in scores)
print('张三' in scores)
del scores['张三'] #删除指定的key=value对
print(scores)
#也可以使用clear()
scores.clear() #清空字典的元素
print(scores)
'''新增元素'''
scores['陈六']=98
print(scores)
'''修改元素'''
scores['陈六']=100
print(scores)
执行结果:
(4)获取字典视图的三个方法
例子:
scores={'张三':100,'李四':98,'王五':45}
#获取所有的key
keys=scores.keys()
print(keys)
print(type(keys))
print(list(keys)) #将所有的key组成的视图转成列表
#获取所有的values()
values=scores.values()
print(values)
print(type(values))
print(list(values))
#获取所有的键值对
items=scores.items()
print(items)
print(list(items)) #转换之后的列表元素是由元组组成的
输出结果:
(5)字典元素的遍历
①字典元素的遍历
for item in scores :
print( item )
②例子:
#字典元素的遍历
for item in scores:
print(item,) #输出字典里的键
print('---------------------')
#如果要输出值,有两种方式
for item in scores:
print(scores[item]) # 这是第一种方式,方括号里面放的是一个键,根据键获取值
print('---------------------')
for item in scores:
print(scores.get(item)) # 这是第二种方式,方括号里面放的是一个键,根据键获取值,
输出结果:
(6)字典的特点
①字典中的所有元素都是一-个key-value对,key不允许重 复,value可 以
重复
②字典中的元素是无序的
③字典中的key必须是不可变对象
④字典也可以根据需要动态地伸缩
⑥字典会浪费较大的内存,是一种使用空间换时间的数据结构.
⑦例子:
d={'name':'张三','name':'李四'} #key不允许重复
print(d)
d={'name':'张三','nikename':'张三'} #value可以重复
print(d)
lst=[10,20,30]
lst.insert(1,100)
print(lst)
#用列表来作为字典元素就会报错,因为列表是可变对象的字是不可变对象
#d={lst:100}
#print(d)
输出结果:
(7)字典生成
方法一:
方法二:
内置函数zip()
用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,
然后返回由这些元组组成的列表
例子:
items=['Fruits','Book','Others']
prices=[98,78,85]
d={item:price for item ,price in zip(items,prices)}
print(d)
#如果要变为大写
d={item.upper():price for item ,price in zip(items,prices)}
print(d)
#如果两个列表的个数不同的话,他会以短的那个为标准
items=['Fruits','Book','Others']
prices=[98,78,85,100]
d={item:price for item ,price in zip(items,prices)}
print(d)
输出结果: