字典
# 字典
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 中字典是一个迭代器对象,其迭代结果是返回键序列