一、字典
字典是python核心对象集合中唯一的一种映射类型,它是通过键(key)而不是相对位置存储对象的,映射并没有维护任何可靠的从左到右的顺序。
- 字面量构建字典
D = {} #空字典
D['name'] = 'Bob'
----
D = {'name': 'Bob', 'age', '40'} #两个元素的字典
如果需要一次动态的建立字典一个字段,那么第一种比较合适
如果可以实现一次性拼凑出整个字典,那么第二种比较合适
- 工厂函数创建字典
D = dict()
D['name'] = 'Bob'
- 其他创建字典的方式
D = dict(name = 'Bob', age = 40)
----
D = dict([('name','Bob'),('age',40)])
----
D = dict(zip(keyslist,valslist))
----
>>> D = dict.fromkeys(['a','b'],'c')
>>> D
{'a': 'c', 'b': 'c'}
第一种所需的代码比字面量少,但是键必须都是字符串
如果需要在程序运行时通过序列构建字典,那么第二种比较合适
在程序运行时动态获取单独键列表和单独值列表需要一一对应拼接在起时可以与zip函数一起使用
如果所有的键的值一开始都相同,就可以用第四种方式
二、字典的操作
- 映射操作:取值、修改
>>> D = {'spam':2, 'ham':3,'eggs':4}
>>> D['spam']
2
----
>>> D['spam'] = '五'
>>> D
{'spam': '五', 'ham': 3, 'eggs': 4}
----
- 字典的其他操作
>>> D = {'spam':2, 'ham':3,'eggs':4}
>>> D.keys() #返回字典中所有的键列表
dict_keys(['spam', 'ham', 'eggs'])
>>> D.values() #返回字典中所有的值列表
dict_values([2, 3, 4])
>>> D.items() #返回字典中(key,value)对元组
dict_items([('spam', 2), ('ham', 3), ('eggs', 4)])
>>> D.get('toast')
>>> print(D.get('toast'))
None
>>> D.pop('ham')
3
>>> D
{'spam': 2, 'eggs': 4}
>>> D
{'spam': 2, 'eggs': 4}
>>> D1 = {'toast':5,'ham':3}
>>> D.update(D1)
>>> D
{'spam': 2, 'eggs': 4, 'toast': 5, 'ham': 3}
三、字典推导
字典推导也是隐式的运行一个循环,根据每次迭代收集表达式的键/值结果,并且使用它们来填充一个新的字典。
例如:
D = dict(zip(['a','b','c'],[1,2,3]))
>>> D = dict(zip(['a','b','c'],[1,2,3]))
>>> D
{'a': 1, 'b': 2, 'c': 3}
也可以通过字典推导表达式来实现同样的效果
D = {k:v for (k,v) in zip(['a','b','c'],[1,2,3])}
>>> D = {k:v for (k,v) in zip(['a','b','c'],[1,2,3])}
>>> D
{'a': 1, 'b': 2, 'c': 3}
利用字典推导实现键/值翻转
>>> D = {v:k for (k,v) in zip(['a','b','c'],[1,2,3])}
>>> D
{1: 'a', 2: 'b', 3: 'c'}
四、字典注意事项
字典的键不一定式字符串,任何不可变对象都是可以的。
- 整数键
>>> D = {}
>>> D[99] = 'python'
>>> D
{99: 'python'}
- 元组键
>>> Matrix = {}
>>> Matrix[(1,2,3)]=99
>>> Matrix
{(1, 2, 3): 99}
网友评论