字典
1.字典是一些 "键 --- 值" 对的无序集和。它通过键来索引。
字典是可变对象,它的元素的值的类型不限,它的元素的键类型是不可变类型
意味着键类型不能是列表、
set
、,字典字典的常量表达式:
{'a':3,'b':4}
,空字典的常量表达式为{}
dict()
函数可以从关键字参数生成字典:dict(a=3,b=4)
生成字典{'a':3,'b':4}
- 你可以通过
zip()
函数生成关键字参数:dict(zip(['a','b'],[3,4]))
生成字典{'a':3,'b':4}
- 你可以通过
你也可以用字典的
.fromkeys()
类方法生成字典:dict.fromkeys(['a','b'])
生成字典{'a':None,'b':None}
dict.fromkeys(['a','b'],3)
生成字典{'a':3,'b':3}
字典索引:
d[key]
。字典索引返回对应的值- 键测试:
key in d
。测试指定键是否存在字典中 - 字典的迭代:
d.keys()
:返回一个dict_keys对象,它是一个可迭代对象,迭代时返回键序列d.values()
:返回一个dict_values对象,它是一个可迭代对象,迭代时返回值序列d.items()
:返回一个dict_items对象,它是一个可迭代对象, 迭代时返回元组(键,值)
的序列字典迭代在Python3中返回可迭代对象,在Python2.7中均返回列表。
因此在Python3中如果想得到列表,必须将返回值传入`list()`函数中得到列表
- 字典的拷贝:
d.copy()
。只是字典的浅拷贝 获取键的值:通过
d.get(key,default_value)
。返回键对应的值, 若键不存在则返回default_value
对于
d[key]
返回对应的值,如果key
不存在则抛出KeyError
异常- 字典的操作:
d1.update(d2)
:合并两个字典,原地修改d1
字典d.pop(key)
: 从字典中删除key
并返回该元素的值del d[key]
:从字典中删除key
但是不返回该元素的值d[key]=value
:原地的添加/修改字典。当向不存在的键赋值时,相当于添加新元素
- 获取字典中元素数量:
len(d)
。它也等于键列表/值列表的长度 字典本身也是一个可迭代对象,它的迭代方法为:
for key in d: pass
它在列表的键上迭代,也等价于
for key in d.keys() pass
2.Python3中字典的变化:
d.keys()
、d.values()
、d.items()
返回的是可迭代对象,他们称为视图对象, 而不是列表。修改字典,则这些视图对象会相应变化- 支持字典解析表达式来生成字典,如
{k:v for k,v in zip(['a','b','c'],[1,2,3])}
,{k:v for k,v in [('a',1),('b',2),('c',3)]}
- 取消了Python2中的
has_key(key)
方法,而用key in d
表达式取代 - Python3中,只有相等不等测试有效,字典的大小比较无效
3.Python3中字典是一个迭代器对象,其迭代结果是返回键序列