本节我们来学习一下Python里很像哈希表(我学过的)一种数据结构——字典。
字典用键对应值,称作键值对记录数据,初始化时利用:进行键和值的分割。因为利用键值对进行数据的记录,因而字典的所有操作都要基于键对值进行操作,其实键就类似于C/CPP数组里的下标。字典和列表、元组的创建方式也不一样,其用大括号{}进行创建。
关键1:字典的创建
字典可以通过大括号{}进行创建,也可以通过内建函数dict()创建,如下:、
#简单的字典实例
tinydict = {'name': 'runoob', 'likes': 123, 'url': 'www.runoob.com'}
#在这个字典中:键'name'对应值'runoob' 键line对应值123 键'url'对应值'www.runoob.com'
#因而访问字典里的值需要如Hash表一样通过键进行访问而非通过顺序下标索引
print("tinydict['name']:",tinydict['name'])
print("tinydict['likes']:",tinydict['likes'])
#总而言之,非常像C语言中的结构体
#使用大括号{}创建空字典
emptyDict = {}
# 打印字典
print(emptyDict)
# 查看字典的数量
print("Length:", len(emptyDict))
# 查看类型
print(type(emptyDict))
#使用内建函数dict创建字典
emptyDict = dict()
# 打印字典
print(emptyDict)
# 查看字典的数量
print("Length:",len(emptyDict))
# 查看类型
print(type(emptyDict))
关键2:字典的索引、修改和删除
由于利用键值对记录数据,因而索引、修改和删除都是通过键进行操作的。
字典增加元素可以直接新增一个新的键指向一个对应的值。
其实修改的时候看成数组的下标索引变成了键就好了,删除同样是需要通过del语句和字典内置的clear()函数进行操作的。当然,删除整个字典的操作也是可以利用del语句的,如下:
#修改字典元素同样要通过键进行值的修改,键值对是一体的
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
#修改,通过键改变值
tinydict['Age'] = 8 # 更新 Age
print ("tinydict['Age']: ", tinydict['Age'])
#新增,新增键来新增值
tinydict['School'] = "菜鸟教程" # 添加信息
print ("tinydict['School']: ", tinydict['School'])
#删除字典元素也是通过键进行删除,利用del语句或字典内置的clear()函数
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print(tinydict)
#删除键
del tinydict['Name'] # 删除键 'Name'
print(tinydict)
#清空字典
tinydict.clear()
#删除整个字典
del tinydict # 删除字典
#下面会引发一个异常,因为用执行 del 操作后字典不再存在
# print ("tinydict['Age']: ", tinydict['Age'])
# print ("tinydict['School']: ", tinydict['School'])
关键3: 键的特性
由于字典通过键值对进行操作,因而键必须满足一定的条件,否则Python将会报错:
1、不允许同一个键出现两次,如果有两次,用后一个,如下:
tinydict = {'Name': 'Runoob', 'Age': 7, 'Name': '小菜鸟'}
print ("tinydict['Name']: ", tinydict['Name'])
2、键值不可变,所以可以用数字,字符串或者元组充当,用列表就不行,如下:
# tinydict = {['Name']: 'Runoob', 'Age': 7}
# print ("tinydict['Name']: ", tinydict[['Name']])
#上述会出错,因为使用了列表作键值,但下面用元组就可以
tinydict = {('Name',12): 'Runoob', 'Age': 7}
print ("tinydict('Name',12): ", tinydict[('Name',12)])
关键4: 字典内置的函数和方法
可以查看代码块的最后部分的注释。
———————————————————————————————————————————
基于菜鸟教程:Python3 字典 | 菜鸟教程 的代码如下,可直接查看运行结果:
#Python字典
#字典类似于Hash表,用键对应值,初始化时用:进行键和值的分割
#d = {key1 : value1, key2 : value2, key3 : value3 }\
#简单的字典实例
tinydict = {'name': 'runoob', 'likes': 123, 'url': 'www.runoob.com'}
#在这个字典中:键'name'对应值'runoob' 键line对应值123 键'url'对应值'www.runoob.com'
#因而访问字典里的值需要如Hash表一样通过键进行访问而非通过顺序下标索引
print("tinydict['name']:",tinydict['name'])
print("tinydict['likes']:",tinydict['likes'])
#总而言之,非常像C语言中的结构体
#使用大括号{}创建空字典
emptyDict = {}
# 打印字典
print(emptyDict)
# 查看字典的数量
print("Length:", len(emptyDict))
# 查看类型
print(type(emptyDict))
#使用内建函数dict创建字典
emptyDict = dict()
# 打印字典
print(emptyDict)
# 查看字典的数量
print("Length:",len(emptyDict))
# 查看类型
print(type(emptyDict))
#修改字典元素同样要通过键进行值的修改,键值对是一体的
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
#修改,通过键改变值
tinydict['Age'] = 8 # 更新 Age
print ("tinydict['Age']: ", tinydict['Age'])
#新增,新增键来新增值
tinydict['School'] = "菜鸟教程" # 添加信息
print ("tinydict['School']: ", tinydict['School'])
#删除字典元素也是通过键进行删除,利用del语句或字典内置的clear()函数
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print(tinydict)
#删除键
del tinydict['Name'] # 删除键 'Name'
print(tinydict)
#清空字典
tinydict.clear()
#删除整个字典
del tinydict # 删除字典
#下面会引发一个异常,因为用执行 del 操作后字典不再存在
# print ("tinydict['Age']: ", tinydict['Age'])
# print ("tinydict['School']: ", tinydict['School'])
#字典键的特性
#1不允许同一个键出现两次,如果有两次,用后一个
tinydict = {'Name': 'Runoob', 'Age': 7, 'Name': '小菜鸟'}
print ("tinydict['Name']: ", tinydict['Name'])
#2键值不可变,所以可以用数字,字符串或者元组充当,用列表就不行
# tinydict = {['Name']: 'Runoob', 'Age': 7}
# print ("tinydict['Name']: ", tinydict[['Name']])
#上述会出错,因为使用了列表作键值,但下面用元组就可以
tinydict = {('Name',12): 'Runoob', 'Age': 7}
print ("tinydict('Name',12): ", tinydict[('Name',12)])
#字典内置函数或方法
# 1 len(dict)
# 计算字典元素个数,即键的总数。
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print(len(tinydict))
# 2 str(dict)
# 输出字典,可以打印的字符串表示。
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print(str(tinydict))
# 3 type(variable)
# 返回输入的变量类型,如果变量是字典就返回字典类型。
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print(type(tinydict))
# 1 dict.clear()
# 删除字典内所有元素
# 2 dict.copy()
# 返回一个字典的浅复制
# 3 dict.fromkeys()
# 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
# 4 dict.get(key, default=None)
# 返回指定键的值,如果键不在字典中返回 default 设置的默认值
# 5 key in dict
# 如果键在字典dict里返回true,否则返回false
# 6 dict.items()
# 以列表返回一个视图对象
# 7 dict.keys()
# 返回一个视图对象
# 8 dict.setdefault(key, default=None)
# 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
# 9 dict.update(dict2)
# 把字典dict2的键/值对更新到dict里
# 10 dict.values()
# 返回一个视图对象
# 11 pop(key[,default])
# 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
# 12 popitem()
# 返回并删除字典中的最后一对键和值。