python字典
类似于java中的map集合,KV类型的数据结构。以下为书中解释
字典 与列表类似,但是更加通用。 在列表中,索引必须是整数;但在字典中,它们可以是(几乎)任何类型。
字典包含了一个索引的集合,被称为 键(keys) ,和一个值(values)的集合。 一个键对应一个值。这种一一对应的关联被称为 键值对(key-value pair) , 有时也被称为 项(item)。
在数学语言中,字典表示的是从键到值的 映射,所以你也可以说每一个键 “映射到” 一个值。 举个例子,我们接下来创建一个字典,将英语单词映射至西班牙语单词,因此键和值都是字符串。
dict函数生成一个不含任何项的新字典。 由于 dict 是内建函数名,你应该避免使用它来命名变量。
>>> eng2sp = dict()
>>> eng2sp
{}
花括号 {} 表示一个空字典。你可以使用方括号向字典中增加项:
>>> eng2sp['one'] = 'uno'
这行代码创建一个新项,将键 'one' 映射至值 'uno'。 如果我们再次打印该字典,会看到一个以冒号分隔的键值对:
eng2sp
{'one': 'uno'}
输出的格式同样也是输入的格式。 例如,你可以像这样创建一个包含三个项的字典:
>>> eng2sp = {'one': 'uno', 'two': 'dos', 'three': 'tres'}
但是,如果你打印 eng2sp ,结果可能会让你感到意外:
>>> eng2sp
{'one': 'uno', 'three': 'tres', 'two': 'dos'}
键-值对的顺序和原来不同。 同样的例子在你的电脑上可能有不同的结果。通常来说,字典中项的顺序是不可预知的。
但这没有关系,因为字典的元素不使用整数索引来索引,而是用键来查找对应的值:
>>> eng2sp['two']
'dos'
键 'two' 总是映射到值 'dos' ,因此项的顺序没有关系。
如果键不存在字典中,会抛出一个异常:
>>> eng2sp['four']
KeyError: 'four'
len函数也适用于字典;它返回键值对的个数:
>>> len(eng2sp)
3
in操作符也适用于字典;它可以用来检验字典中是否存在某个 键 (仅仅有这个值还不够)。
>>> 'one' in eng2sp
True
>>> 'uno' in eng2sp
False
想要知道字典中是否存在某个值,你可以使用 values 方法,它返回值的集合,然后你可以使用 in 操作符来验证:
>>> vals = eng2sp.values()
>>> 'uno' in vals
True
in操作符对列表和字典采用不同的算法。 对于列表,它按顺序依次查找目标&#x