Python内置的数据结构之一,与列表一样是一个可变序列,以键值对的方式存储数据,字典是一个无序的序列
字典示意图
字典的实现原理
字典的实现原理与查字典类似,查字典是先根据部首或拼音查找对应的页码,Python中的字典是根据key查找value所在的位置
scores={‘张三’:100,’李四’:98,’王五’:45}
print('------------------字典的创建-------------------')
print('------------{}-----------')
s = {'aa': 10, 'bb': 20}
dict(name=’m’,age=20)
print('---------dict()----------')
s = dict(name='m', age=20)
print(s)
# 空字典
s = {}
print(s)
[ ]如果字典中不存在指定的key,抛出keyError异常
get( )方法取值,如果字典中不存在指定的key,并不会抛出keyError,而是返回None,可以通过参数设置默认的value,以便指定的key不存在时返回
print('-----------------字典的常用操作-----------------')
s = {'aa': 10, 'bb': 20}
print('-----------[]------------')
print(s['aa'])
# print(s['cc']) # KeyError: 'cc'
print('---------get()-----------')
print(s.get('aa'))
print(s.get('cc')) # None
print(s.get('cc', 33)) # 33是在查找‘cc’所对应的value不存在时,提供一个默认值
print('--------key的判断----------')
s = {'aa': 10, 'bb': 20}
print('aa' in s)
print('cc' not in s)
del scores[‘张丹’]
print('------------del-----------')
s = {'aa': 10, 'bb': 20}
del s['aa']
print(s)
print('---------clear()-----------')
s.clear()
print(s)
scores[‘Marry’]=90
print('-------字典元素的新增-------')
s = {'aa': 10, 'bb': 20}
print(s)
s['cc'] = 33
print(s)
s['aa'] = 11
print(s)
print('-----------获取key---------')
s = {'aa': 10, 'bb': 20}
key = s.keys()
print(key)
print(type(key))
print(list(key))
print('----------获取value--------')
s = {'aa': 10, 'bb': 20}
value = s.values()
print(value)
print(type(value))
print(list(value))
print('---------获取key-value-------')
s = {'aa': 10, 'bb': 20}
item = s.items()
print(item)
print(type(item))
print(list(item)) # 元组组成的列表
for item in scores:
print(item)
print('---------字典元素的遍历-------')
s = {'aa': 10, 'bb': 20}
for i in s:
print(i, s[i], s.get(i))
字典中的所有元素都是一个key-value对,key不允许重复,value可以重复
字典中的元素是无序的
字典中的key必须是不可变对象
字典也可以根据需要动态地伸缩
字典会浪费较大的内存,是一种使用空间换时间的数据结构
用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表
print('------------zip()----------')
a = ['aa', 'bb']
b = [11, 22, 33]
lst = zip(a, b)
print(list(lst))
print('----------字典生成式---------')
f = {d.upper(): x for d, x in zip(a, b)}
print(f)
使用copy()对字典进行复制,然后对复制的字典进行修改,原字典不受影响
使用copy()相当于创建了一个新的字典
属于浅拷贝
print('---------copy()------------')
s = {'aa': 10, 'bb': 20}
'''
使用copy()对字典进行复制,然后对复制的字典进行修改,原字典不受影响
使用copy()相当于创建了一个新的字典
属于浅拷贝
'''
s_copy = s.copy()
print(s_copy)
用序列中的元素作为字典的键
第二个参数为字典所有参数对应的初始值
print('-------fromkeys()---------')
'''
用序列中的元素作为字典的键
第二个参数为字典所有参数对应的初始值
'''
a = ['aa', 'bb']
s = dict.fromkeys(a)
print('不指定默认值:', s)
s = dict.fromkeys(a, 12)
print('指定默认值:', s)