字典表的数据形态是怎样的?可以进行什么操作?字典表和列表很像,但是具体有什么差异呢?
字典表的声明
- 通过{‘键1’: 值, ‘键2’: 值, … }
- 通过dict函数 dict(键 = 值)注意键不需要加引号
值可以取任何数据类型,但定义一个字典表的键时,必须要用不可变的类型(不支持原位改变),如字符串、数字和元组。
emp = {'name':'mike', 'age': 20, 'job': 'dev'}
dict2 = { 'abc': 1,'b2':2, 666: 3 ,(20,30):4}
获取
emp['name']
emp.get('name')
emp.get('Name',0.0)#找不到则结果显示0.0
原位改变
- 如果要修改原有键的值,可以直接重新赋值:
emp['name'] = 'jerry'
print(emp)
Out[1]: {'name': 'jerry', 'age': 20, 'job': 'dev'}
- 如果要增加一个键:
emp['year'] = 8
Out[2]: {'name': 'mike', 'age': 20, 'job': 'dev', 'year': 8}
- 如果要增加多个键,可以利用emp.update方法:
dep = {'department' : 'ABC','abc': 1,'b2':2, 666: 3 }
emp.update(dep)
- 如果要减少一个键,可以利用emp.pop的方法:
查看键和值
emp.keys()
emp.values()
emp.items()
返回的结果不是列表,不能进行python3默认的所有列表操作,但可以遍历:
for k in emp.keys(): print(k)
for v in emp.values(): print(v)
for k,v in emp.items(): print('{} => {}'.format(k, v))
如果是字典表有嵌套的情况:
emp = {'name': {'first': 'mike', 'last' : 'jerry'},'age': 20, 'job': 'dev'}
emp.get('name')
emp['name']['first']
排序
Python 3.6 改写了 dict 的内部算法,因此 3.6 的 dict 是有序的,在此版本之前皆是无序
- 将keys()放入列表
d= {'a': 1, 'b':2}
ks = list(d.keys())
ks.sort()
for k in ks: print(d.get(k))
- 使用全局函数sorted,可以运用在可迭代对象上
d= {'a': 1, 'b':2}
ks = d.keys()
for k in sorted(ks):
print(k, d.get(k))