Python 3 – 字典
每个键被冒号(:)与其值分隔,项之间用逗号分隔,整个内容被括在花括号中。不带任何项的空字典用两个花括号表示,如下:{}。
字典中的键是唯一的,而值可能不是。字典的值可以是任何类型,但键必须是不可变数据类型,如字符串、数字或元组。
字典访问值
要访问字典元素,可以使用熟悉的方括号与键一起获取其值。以下是一个简单的示例:
#!/usr/bin/python3
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])
执行上述代码时,会产生以下结果:
dict['Name']: Zara
dict['Age']: 7
如果我们试图访问字典中的一个不在其中的键数据项,将会得到以下错误信息:
#!/usr/bin/python3
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print ("dict['Alice']: ", dict['Alice'])
执行上述代码时,会产生以下结果:
dict['Zara']:
Traceback (most recent call last):
File "test.py", line 4, in <module>
print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'
更新字典元素
可以通过添加新条目或键值对、修改现有条目或删除现有条目来更新字典,如下面给出的简单示例所示。
#!/usr/bin/python3
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8; # 更新现有条目
dict['School'] = "DPS School" # 添加新条目
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])
执行上述代码时,会产生以下结果:
dict['Age']: 8
dict['School']: DPS School
删除字典元素
可以删除单个字典元素或清除字典的所有内容。也可以一次性删除整个字典。
要显式删除整个字典,只需使用 del 语句。以下是一个简单的示例:
#!/usr/bin/python3
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name'] # 删除键为'Name'的条目
dict.clear() # 移除字典中的所有条目
del dict # 删除整个字典
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])
这将产生以下结果。
由于 del dict 后,字典不存在了,因此会引发异常。
dict['Age']:
Traceback (most recent call last):
File "test.py", line 8, in <module>
print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable
提示 − del() 方法将在后续的部分进行讨论。
字典键的属性
字典值没有限制,可以是任意的 Python 对象,可以是标准对象或用户定义的对象。但是,对于键则不是这样。
有两个关于字典键的重要要点:
(a) 不允许一个键有多个值。这意味着重复的键不允许存在。当在赋值的过程中出现重复键时,最后一个赋值将生效。例如:
#!/usr/bin/python3
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print ("dict['Name']: ", dict['Name'])
当上述代码被执行时,它将产生以下结果:
dict['Name']: Manni
(b) 键必须是不可变的。这意味着您可以将字符串、数字或元组用作字典键,但不能像 [‘key’] 这样使用。以下是一个简单的示例:
#!/usr/bin/python3
dict = {['Name']: 'Zara', 'Age': 7}
print ("dict['Name']: ", dict['Name'])
当上述代码被执行时,它将产生以下结果:
Traceback (most recent call last):
File "test.py", line 3, in <module>
dict = {['Name']: 'Zara', 'Age': 7}
TypeError: list objects are unhashable
内置字典函数和方法
Python 包括以下字典函数:
Sr.No. | 函数&描述 |
---|---|
1 | cmp(dict1, dict2)在 Python 3 中不再可用。 |
2 | len(dict)返回字典中的项数。 |
3 | str(dict)输出字典的可打印的字符串表示。 |
4 | type(variable)返回传递变量的类型,如果传递的是字典,则返回字典类型。 |
Python 包括以下字典方法:
序号 | 方法和描述 |
---|---|
1 | dict.clear() 删除字典 dict 中的所有元素 |
2 | dict.copy() 返回字典 dict 的浅拷贝 |
3 | dict.fromkeys() 使用 seq 中的键创建一个新字典,并将值设置为 value 。 |
4 | dict.get(key, default=None) 对于键 key ,如果在字典中,则返回其值;否则返回默认值 default |
5 | dict.has_key(key) 已删除,请使用 in 运算符代替。 |
6 | dict.items() 返回字典 dict 中所有的键值对元组 |
7 | dict.keys() 返回字典 dict 中所有的键 |
8 | dict.setdefault(key, default = None) 类似于 get(),但是如果 key 不在字典中,将返回默认值, default 并将其添加到字典中。 |
9 | dict.update(dict2) 将字典 dict2 的键值对添加到字典 dict 中 |
10 | dict.values() 返回字典 dict 中所有的值 |