python dict 字典
字典是另一种可变容器模型,且可存储任意类型对象。dict
是python内置的关键字
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中,相对地,列表(list)和元组(tuple)都是有序的序列,它们的元素在底层是挨着存放的。
字典格式如下所示:
d = {key1 : value1, key2 : value2, key3 : value3 }
字典类型是 Python 中唯一的映射类型。“映射”是数学中的术语,简单理解,它指的是元素之间相互对应的关系,即通过一个元素,可以唯一找到另一个元素。字典中,习惯将各元素对应的索引称为键(key),各个键对应的元素称为值(value),键及其关联的值称为“键值对”。
字典结构示意:
python字典创建
1) 使用 { } 创建字典
由于字典中每个元素都包含两部分,分别是键(key)和值(value),因此在创建字典时,键和值之间使用冒号:分隔,相邻元素之间使用逗号,分隔,所有元素放在大括号{ }中。使用{ }创建字典的语法格式如下:
dictname = {'key':'value1', 'key2':'value2', ..., 'keyn':valuen}
其中 dictname 表示字典变量名,keyn : valuen 表示各个元素的键值对。需要注意的是,同一字典中的各个键必须唯一,不能重复。
如下代码示范了使用花括号语法创建字典:
#使用字符串作为key
scores = {'数学': 95, '英语': 92, '语文': 84}
print(scores)
#使用元组和数字作为key
dict1 = {(20, 30): 'great', 30: [1,2,3]}
print(dict1)
#创建空元组
dict2 = {}
print(dict2)
运行结果为:
{'数学': 95, '英语': 92, '语文': 84}
{(20, 30): 'great', 30: [1, 2, 3]}
{}
可以看到,字典的键可以是整数、字符串或者元组,只要符合唯一和不可变的特性就行;字典的值可以是 Python 支持的任意数据类型。
通过dict() 函数创建字典
a = dict(str1=value1, str2=value2, str3=value3)
str 表示字符串类型的键,value 表示键对应的值。使用此方式创建字典时,字符串不能带引号。
# 创建空的字典
d = dict()
print(d)
运行结果为:
{}
python字典元素访问
列表和元组是通过下标来访问元素的,而字典不同,它通过键来访问对应的值。因为字典中的元素是无序的,每个元素的位置都不固定,所以字典也不能像列表和元组那样,采用切片的方式一次性访问多个元素。
Python 访问字典元素的具体格式为:
dictname[key]
其中,dictname 表示字典变量的名字,key 表示键名。注意,键必须是存在的,否则会抛出异常。
请看下面的例子:
tup = (['two',26], ['one',88], ['three',100], ['four',-59])
dic = dict(tup)
print(dic['one']) #键存在
print(dic['five']) #键不存在
运行结果:
88
Traceback (most recent call last):
File "C:\Users\mozhiyan\Desktop\demo.py", line 4, in <module>
print(dic['five']) #键不存在
KeyError: 'five'
除了上面这种方式外,Python 更推荐使用 dict 类型提供的 get() 方法来获取指定键对应的值。当指定的键不存在时,get() 方法不会抛出异常。
get() 方法的语法格式为:
dictname.get(key[,default])
其中,dictname 表示字典变量的名字;key 表示指定的键;default 用于指定要查询的键不存在时,此方法返回的默认值,如果不手动指定,会返回 None。
get() 使用示例:
a = dict(two=0.65, one=88, three=100, four=-59)
print( a.get('one') )
运行结果:
88
注意,当键不存在时,get() 返回空值 None,如果想明确地提示用户该键不存在,那么可以手动设置 get() 的第二个参数,例如:
a = dict(two=0.65, one=88, three=100, four=-59)
print( a.get('five', '该键不存在') )
运行结果:
该键不存在
python字典元素修改
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
#!/usr/bin/python3
tinydict = {'Name': 'catroom', 'Age': 7, 'Class': 'First'}
tinydict['Age'] = 8 # 更新 Age
tinydict['School'] = "catroom" # 添加信息
print ("tinydict['Age']: ", tinydict['Age'])
print ("tinydict['School']: ", tinydict['School'])
以上实例输出结果:
tinydict['Age']: 8
tinydict['School']: catroom
python字典元素删除
能删单一的元素也能清空字典,清空只需一项操作。
显式删除一个字典用del命令,如下实例:
#!/usr/bin/python3
tinydict = {'Name': 'catroom', 'Age': 7, 'Class': 'First'}
del tinydict['Name'] # 删除键 'Name'
tinydict.clear() # 清空字典
del tinydict # 删除字典
print ("tinydict['Age']: ", tinydict['Age'])
print ("tinydict['School']: ", tinydict['School'])
但这会引发一个异常,因为用执行 del 操作后字典不再存在:
Traceback (most recent call last):
File "/runoob-test/test.py", line 9, in <module>
print ("tinydict['Age']: ", tinydict['Age'])
NameError: name 'tinydict' is not defined
python字典内置函数
len(dict) 计算字典元素个数,即键的总数。
实例:
>>> tinydict = {'Name': 'catroom', 'Age': 7, 'Class': 'First'}
>>> len(tinydict)
3
str(dict) 输出字典,可以打印的字符串表示。
实例:
>>> tinydict = {'Name': 'catroom', 'Age': 7, 'Class': 'First'}
>>> str(tinydict)
"{'Name': 'catroom', 'Class': 'First', 'Age': 7}"
type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。
实例:
>>> tinydict = {'Name': 'catroom', 'Age': 7, 'Class': 'First'}
>>> type(tinydict)
<class 'dict'>