6.字典
6.1字典的定义
字典:是python内置的数据结构之一,与列表一样是一个可变序列,以键值对的方式存储数据,字典是一个无序的序列,用{ }表示,冒号分割,每个键值对用逗号分割。根据key查找value所在的位置。
键必须唯一,值不必;值可以取任何数据类,但键必须是不可变,
语法:d={key1:value,key2:value...}
scores={'张三':99,'李四':67,'王五':89}
字典的特点:
1.字典中的所有元素都是key-value对,key不允许重复,value可以
2.字典元素无序
3.字典中的key必须是不可变对象
4.字典也可以根据需要动态伸缩
5.字典会浪费较多内存,使用空间换时间的数据结构
d={'name':'张一','name':'张二'} #key不可以重复
print(d)
d={'name':'张一','nickname':'张一'} #value可以重复
print(d)
字典中的内置方法:
序号 | 函数 | 描述 |
---|---|---|
1 | dict.clear() | 删除字典内所有元素 |
2 | dict.copy() | 返回一个字典的浅复制 |
3 | dict.fromkeys() | 创建一个新字典,以序列seq中的元素做字典的键,val为字典所有键的对应初始值 |
4 | dict.get(key,default=None) | 返回指定键的值 |
5 | key in dict | 键在字典就返回True |
6 | dict.items() | 以列表返回一个视图对象 |
7 | dict.keys() | 返回一个视图对象 |
8 | dict.drtdefault(key,default=None) | 和get()类似 |
9 | dict.update(dict2) | 把字典dict2的键/值对更新到dict中 |
10 | dict.values() | 返回一个视图对象 |
11 | pop(key,[default]) | 删除字典给定key所对应的值,返回值为被删除的值 |
12 | popitem() | 返回并删除字典中的最后一对键和值 |
6.2字典的创建
常用方式:
1.花括号
#使用大括号创建空字典
emptyDict={}
print(emptyDict)
#查字典的数量
print("Length:",len(emptyDict))
#查字典类型
print(type(emptyDict))
==========================》
{}
Length: 0
<class 'dict'>
2.使用内置函数dict()
#dict()
student=dict(name='lini',age=20)
print(student)
==========>
{'name': 'lini', 'age': 20}
6.3字典的获取
获取字典中的元素:使用[]或者get()方法
[]取值:[]如果字典中共不存在指定的key,则报keyError错
get()取值:如果字典中不存在指定key,则返回None,可以通过参数设置默认的value,以便指定的key不存在时返回
eg1:
#[]取值
tinydict={'Name':'Lini','Age':20,'Class':'First'}
print("tinydict['Name']:",tinydict['Name'])
print("tinydict['Age']:",tinydict['Age'])
#get()取值
print(tinydict.get('Name'))
print(tinydict.get('Age'))
#print("tinydict['abc']:",tinydict['Ailce']) #不存在KeyError: 'Ailce'
#print(tinydict.get('math')) #会提示None
=====================================>
tinydict['Name']: Lini
tinydict['Age']: 20
Lini
20
6.4字典的常用操作
key的判断:
in:指定key在字典中存在返回True
not in :指定key在字典中共不存在返回True
字典元素的删除:del
字典元素的新增:scores
scores={'张三':99,'小四':89,'王五':65}
print('张三' in scores)
print('张三' not in scores)
#删除键值对
del scores['张三']
#scores.clear() #清空字典
print(scores)
#新增元素
scores['苏六']=78
print(scores)
#修改元素
scores['苏六']=100
print(scores)
=======================>
True
False
{'小四': 89, '王五': 65}
{'小四': 89, '王五': 65, '苏六': 78}
{'小四': 89, '王五': 65, '苏六': 100}
获取字典视图的三种方法:
keys():获取字典中所有key
values():获取字典中所有value
items():获取字典中所有key:value对
scores={'张三':99,'小四':89,'王五':65}
print('-------获取所有的key--------------')
keys=scores.keys()
print(keys)
print(type(keys))
print(list(keys)) #将所有key组成的视图转换成列表
print('-------获取所有的value--------------')
values=scores.values()
print(values)
print(type(values))
print(list(values))
print('-------获取所有的key-value对--------------')
items=scores.items()
print(items)
print(list(items)) #转换之后的列表元素由元组组成
==============================================>
-------获取所有的key--------------
dict_keys(['张三', '小四', '王五'])
<class 'dict_keys'>
['张三', '小四', '王五']
-------获取所有的value--------------
dict_values([99, 89, 65])
<class 'dict_values'>
[99, 89, 65]
-------获取所有的key-value对--------------
dict_items([('张三', 99), ('小四', 89), ('王五', 65)])
[('张三', 99), ('小四', 89), ('王五', 65)]
字典元素的遍历
scores={'张四':69,'小五':90,'陈六':89}
#字典元素的遍历
for item in scores:
print(item,scores[item],scores.get(item))
==============================》
张四 69 69
小五 90 90
陈六 89 89
字典生成式
内置函数zip():用于将可迭代的对象作为参数,并将对象中对应的元素打包成一个元组,然后返回又这些元组组成的列表
items=['red','green','blue']
sizes=[96,89,80,100,130]
d={item.upper():sizes for item,sizes in zip(items,sizes)} #upper把字母变成大写
print(d)
==================》
{'RED': 96, 'GREEN': 89, 'BLUE': 80}
6.5总结
字典的创建:使用{}花括号,内置函数dict(),字典生成式
常用操作:
1.获取value:字典名[key],字典名.get(key)
2.删除key-value对,del字典名[key]
3.修改/新增,字典名[key]=value
4.in /not in