python基础【五、字典(dict)】

安稳与你 提交于 2019-11-27 02:38:57

1.字典介绍

  • 每个字典元素都有键(key)和值(value)两个属性
  • key用于定义和标识字典元素,value是字典元素对应的值
  • value可以是任意值;字典、列表不能作为字典的key
  • 字典是用键-值(key-value)存储,具有极快的查找速度
  • 字典是无序的

list比较,dict有以下几个特点:

  1. 查找和插入的速度极快,不会随着key的增加而变慢
  2. 需要占用大量的内存,内存浪费多

注意:字典的key必须是不可变对象

这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了,这个通过key计算位置的算法称为哈希算法(Hash)

要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key,而list是可变的,就不能作为key

2.定义字典

  • 字典元素使用{}括起来
  • 键和值之间由冒号(:)分隔,元素间由逗号(,)分隔
d={'name':'小明','sex':'男','age':'18'}

定义一个空字典

d={}

3.获取字典长度

d={'name':'小明','sex':'男','age':'18'}
v=len(d)
print(v)

运行结果

3

4.访问字典元素

d={'name':'小明','sex':'男','age':'18'}
print(d['name'])
print(d['sex'])
print(d['age'])

运行结果

小明
男
18

5.添加字典元素

d={'name':'小明','sex':'男','age':'18'}
d['score']=80
print(d)

运行结果

{'name': '小明', 'sex': '男', 'age': '18', 'score': 80}

6.合并两个字典

字典1.update(字典2)

d1={'name':'小明','sex':'男'}
d2={'age':'18','score':'80'}
d1.update(d2)  #将d2合并到d1中,合并时直接加到末尾
print(d1)

d1={'name':'小明','sex':'男'}
d2={'age':'18','score':'80'}
d2.update(d1)   #将d1合并到d2中,合并时直接加到末尾
print(d2)

运行结果

{'name': '小明', 'sex': '男', 'age': '18', 'score': '80'}
{'age': '18', 'score': '80', 'name': '小明', 'sex': '男'}

7.删除字典元素

<1>字典.pop()

d={'name':'小明','sex':'男','age':'18'}
d.pop('sex')
print(d)

运行结果

{'name': '小明', 'age': '18'}

<2>del 字典[键]

d={'name':'小明','sex':'男','age':'18'}
del d['name']
print(d)

运行结果

{'sex': '男', 'age': '18'}

<3>随机删除

字典.popitem()

d={'name':'小明','sex':'男','age':'18'}
v=d.popitem()
print(d,v)

运行结果

{'name': '小明', 'sex': '男'} ('age', '18')

8.判断某个元素是否存在在字典里

<1>使用in关键字判断字典中是否存在指定键的元素

键 in 字典

d={'name':'小明','sex':'男','age':'18'}
print('name' in d)
print('number' in d)

运行结果

True
False

<2>通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value

d={'name':'小明','sex':'男','age':'18'}
v=d.get('name')
print(v)
v=d.get('number')
print(v)
v=d.get('number',-1)
print(v)

运行结果

小明
None
-1

9.遍历字典元素

for key in 字典.keys(): #遍历字典的键
访问 字典[key]
for value in 字典.values(): #遍历字典的值
访问 字典[value]

遍历键

d={'name':'小明','sex':'男','age':'18'}
for key in d.keys():
    print(key)

运行结果

name
sex
age

遍历值

for value in d.values():
    print(value)

运行结果

小明
男
18

遍历键和值

for key in d.items():
    print(key)

for key in d.keys():
    print('键'+key+'的值:'+d[key])

运行结果

('name', '小明')
('sex', '男')
('age', '18')

键name的值:小明
键sex的值:男
键age的值:18

10.字典的嵌套

访问嵌套字典

字典[键][键]

d={'name':{'first':'小明','last':'小李'},'age':'30'}
print(d['name']['first'])

运行结果

小明

11.根据序列,创建字典,并指定统一的值

dict.fromkeys(键,值)

v=dict.fromkeys(['123','666','good'],45)
print(v)
v=dict.fromkeys(['123','666','good'])
print(v)

运行结果

{'123': 45, '666': 45, 'good': 45}
{'123': None, '666': None, 'good': None}

12.设置值

字典.setdefault()

  • 已存在,不设置,获取当前key对应的值
  • 不存在,设置,获取当前key对应的值
d={'k1':123,'k2':'apple'}
v=d.setdefault('k1','v1')
print(d,v)
v=d.setdefault('k3',666)
print(d,v)

运行结果

{'k1': 123, 'k2': 'apple'} 123
{'k1': 123, 'k2': 'apple', 'k3': 666} 666

13.更新字典

字典.update()

d={'k1':123,'k2':'apple'}
d.update({'k1':1111,'k3':666})
print(d)

d={'k1':123,'k2':'apple'}
d.update(k1=111,k3=666)
print(d)

运行结果

{'k1': 1111, 'k2': 'apple', 'k3': 666}
{'k1': 111, 'k2': 'apple', 'k3': 666}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!