Python中的字典

字典

Python内置的数据结构之一,与列表一样是一个可变序列,以键值对的方式存储数据,字典是一个无序的序列
Python中的字典_第1张图片
字典示意图
Python中的字典_第2张图片
字典的实现原理
字典的实现原理与查字典类似,查字典是先根据部首或拼音查找对应的页码,Python中的字典是根据key查找value所在的位置

1.字典的创建

(1)使用花括号

scores={‘张三’:100,’李四’:98,’王五’:45}

print('------------------字典的创建-------------------')
print('------------{}-----------')
s = {'aa': 10, 'bb': 20}

(2)使用内置函数dict()

dict(name=’m’,age=20)

print('---------dict()----------')
s = dict(name='m', age=20)
print(s)
# 空字典
s = {}
print(s)

Python中的字典_第3张图片

2.字典的常用操作

(1)字典中元素的获取

在这里插入图片描述

(2)[ ]取值与使用get( )取值的区别

[ ]如果字典中不存在指定的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不存在时,提供一个默认值

Python中的字典_第4张图片

(3)key的判断

Python中的字典_第5张图片

print('--------key的判断----------')
s = {'aa': 10, 'bb': 20}
print('aa' in s)
print('cc' not in s)

在这里插入图片描述

(4)字典元素的删除del、clear()

del scores[‘张丹’]

print('------------del-----------')
s = {'aa': 10, 'bb': 20}
del s['aa']
print(s)
print('---------clear()-----------')
s.clear()
print(s)

在这里插入图片描述

(5)字典元素的新增

scores[‘Marry’]=90

print('-------字典元素的新增-------')
s = {'aa': 10, 'bb': 20}
print(s)
s['cc'] = 33
print(s)
s['aa'] = 11
print(s)

在这里插入图片描述

(6)获取字典视图的三个方法

Python中的字典_第6张图片

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)) # 元组组成的列表

Python中的字典_第7张图片

(7)字典元素的遍历

for item in scores:
print(item)

print('---------字典元素的遍历-------')
s = {'aa': 10, 'bb': 20}
for i in s:
    print(i, s[i], s.get(i))

在这里插入图片描述

3.字典的特点

字典中的所有元素都是一个key-value对,key不允许重复,value可以重复
字典中的元素是无序的
字典中的key必须是不可变对象
字典也可以根据需要动态地伸缩
字典会浪费较大的内存,是一种使用空间换时间的数据结构

4.字典生成式

(1)内置函数zip()

用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表

print('------------zip()----------')
a = ['aa', 'bb']
b = [11, 22, 33]
lst = zip(a, b)
print(list(lst))

(2)字典生成式

Python中的字典_第8张图片

print('----------字典生成式---------')
f = {d.upper(): x for d, x in zip(a, b)}
print(f)

在这里插入图片描述

(3)copy()

使用copy()对字典进行复制,然后对复制的字典进行修改,原字典不受影响
使用copy()相当于创建了一个新的字典
属于浅拷贝

print('---------copy()------------')
s = {'aa': 10, 'bb': 20}
'''
使用copy()对字典进行复制,然后对复制的字典进行修改,原字典不受影响
使用copy()相当于创建了一个新的字典
属于浅拷贝
'''
s_copy = s.copy()
print(s_copy)

(4)fromkeys()

用序列中的元素作为字典的键
第二个参数为字典所有参数对应的初始值

print('-------fromkeys()---------')
'''
用序列中的元素作为字典的键
第二个参数为字典所有参数对应的初始值
'''
a = ['aa', 'bb']
s = dict.fromkeys(a)
print('不指定默认值:', s)
s = dict.fromkeys(a, 12)
print('指定默认值:', s)

Python中的字典_第9张图片

你可能感兴趣的:(python学习之路)