主要特征 | 解释 |
---|---|
通过键而不是通过索引来读取元素 | 字典类型有时也称为关联数组或者散列表(hash)。它是通过键将一系列的值联系起来的,这样就可以通过键从字典中获取指定项,但不能通过索引来获取。 |
字典是任意数据类型的无序集合 | 和列表、元组不同,通常会将索引值 0 对应的元素称为第一个元素。而字典中的元素是无序的。 |
字典是可变的,并且可以任意嵌套 | 字典可以在原处增长或者缩短(无需生成一个副本),并且它支持任意深度的嵌套,即字典存储的值也可以是列表或其它的字典。 |
字典中的键必须唯一 | 字典中,不支持同一个键出现多次,否则,只会保留最后一个键值对。 |
字典中的键必须不可变 | 字典中的值是不可变的,只能使用数字、字符串或者元组,不能使用列表。 |
Python 中的字典类型相当于 Java 或者 C++ 中的 Map 对象。
>>> a = {'one':1,'two':2,'three':3} #a 是一个字典类型
>>> type(a)
<class 'dict'>
dictname = {'key':'value1','key2':'value2',...,'keyn':valuen}
其中 dictname 表示字典类型名,keyn : valuen 表示各个元素的键值对。需要注意的是,同一字典中各个元素的键值必须唯一。
- scores = {'语文': 89, '数学': 92, '英语': 93}
- print(scores)
- # 空的花括号代表空的dict
- empty_dict = {}
- print(empty_dict)
- # 使用元组作为dict的key
- dict2 = {(20, 30):'good', 30:[1,2,3]}
- print(dict2)
{'语文': 89, '数学': 92, '英语': 93}
{}
{(20, 30): 'good', 30: [1, 2, 3]}
dictname = dict.fromkeys(list,value=None)
其中,list 参数表示字典中所有键的列表,value 参数默认为 None,表示所有键对应的值。
- knowledge = {'语文', '数学', '英语'}
- scores = dict.fromkeys(knowledge)
- print(scores)
{'语文': None, '数学': None, '英语': None}
可以看到,knowledge 列表中的元素全部作为了 scores 字典的键,而各个键对应的值都为空(None)。此种创建方式,通常用于初始化字典,设置 value 的默认值。创建格式 | 注意事项 |
---|---|
>>> a = dict(one=1,two=2,three=3) | 注意,其中的 one、two、three 都是字符串,但使用此方式创建字典时,字符串不能带引号。 |
>>> demo = [('two',2),('one',1),('three',3)] #方式1 >>> demo = [['two',2],['one',1],['three',3]] #方式2 >>> demo = (('two',2),('one',1),('three',3)) #方式3 >>> demo = (['two',2],['one',1],['three',3]) #方式4 >>> a = dict(demo) | 向 dict() 函数传入列表或元组,而它们中的元素又各自是包含 2 个元素的列表或元组,其中第一个元素作为键,第二个元素作为值。 |
>>> demokeys = ['one','two','three'] #还可以是字符串或元组 >>> demovalues = [1,2,3] #还可以是字符串或元组 >>> a = dict(zip(demokeys,demovalues)) | 通过应用 dict() 函数和 zip() 函数,可将前两个列表转换为对应的字典。 |
注意,无论采用以上哪种方式创建字典,字典中各元素的键都只能是字符串、元组或数字,不能是列表。
- # 创建空的字典
- dict5 = dict()
- print(dict5)
{}
因为字典中元素是无序的,所以不能像列表、元组那样,采用切片的方式一次性访问多个元素。
例如,如果想访问刚刚建立的字典 a 中,获取元素 1,可以使用下面的代码:>>> a['one']
1
>>> a['four']
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
a['four']
KeyError: 'four'
dict.get(key[,default])
其中,dict 指的是所创建的字典名称;key 表示指定的键;default 用于指定要查询的键不存在时,此方法返回的默认值,如果不手动指定,会返回 None。>>> a = dict(one=1,two=2,three=3)
>>>a.get('two')
2
>>> a = dict(one=1,two=2,three=3)
>>> a.get('four','字典中无此键')
'字典中无此键'
>>> a = dict(one=1,two=2,three=3)
>>> a
{'one': 1, 'two': 2, 'three': 3}
>>> del(a)
>>> a
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
a
NameError: name 'a' is not defined
联系客服