02字典
简介
字典是python中的一种数据结构,将它看做一个键:值对的集合
1.字典的定义
>>> xiaoming={'username': 'xiaoming', 'age': 30, 'work': 'testing', 'hobby': ['sports', 'movie']}
字典是没有顺序的,不支持索引,切片和步长的操作:
访问字典中的某个字段值,通常使用[key]方式进行访问:
>>> xiaoming['username'] #通过key值访问value
2.常用方法
添加
>>> xiaoming={'username': 'xiaoming', 'age': 30, 'work': 'testing', 'hobby': ['sports', 'movie']}
#新增
>>> xiaoming['salary']=5000
{'username': 'xiaoming', 'age': 30, 'work': 'testing', 'hobby': ['sports', 'movie'], 'salary': 5000}
修改
xiaoming['age']=25
>>> xiaoming #输入结果
{'username': 'xiaoming', 'age': 25, 'work': 'testing', 'hobby': ['sports', 'movie'], 'salary': 5000}
删除
pop删除指定字段
>>> xiaoming.pop('age')
25
>>> xiaoming
{'username': 'xiaoming', 'work': 'testing', 'hobby': ['sports', 'movie'], 'salary': 5000}
popitem删除最后一个字段
>>> xiaoming.popitem()
('salary', 5000)
>>> xiaoming
{'username': 'xiaoming', 'work': 'testing', 'hobby': ['sports', 'movie']}
update更新或者新增字段
>>> xiaoming.update(age=20)
>>> xiaoming
{'username': 'xiaoming', 'age': 20, 'work': 'testing', 'hobby': ['sports', 'movie']}
3.查找
key值在字典中存在
>>> xiaoming
{'username': 'xiaoming', 'work': 'testing', 'hobby': ['sports', 'movie']}
>>> 'testing' in xiaoming #标准用法
False
get(k)
>> xiaoming.get('work')
'testing'
通过k获取value
>>> xiaoming['username'] 'xiaoming'
keys获取所有的key,生成一个列表
>>> xiaoming.keys() dict_keys(['username', 'age', 'work', 'hobby'])
values获取所有的value,生成一个列表
>>> xiaoming.values() dict_values(['xiaoming', 30, 'testing', ['sports', 'movie']])
>>> xiaoming.update(sex='男') #新增字段
>>> xiaoming
{'username': 'xiaoming', 'age': 20, 'work': 'testing', 'hobby': ['sports', 'movie'], 'sex': '男'}
items()把字典转换成列表
>>> xiaoming.items()
dict_items([('username', 'xiaoming'), ('age', 20), ('work', 'testing'), ('hobby', ['sports', 'movie']), ('sex', '男')])
clear() 清空列表
>>> xiaoming.clear()
>>> xiaoming
{}
5.循环字典
方法1:
for k in xiaoming:
print(k,xiaoming[k])
#输出结果
username xiaoming age 25 work testing hobby ['sports', 'movie'] salary 5000
方法2:
for k,v in xiaoming.items():
print(k,v)
#输出结果
username xiaoming age 30 work testing hobby ['sports', 'movie'] salary 5000
①方法1的效率比方法2的效率高很多
②方法1是直接通过key取value
③方法2是先把字典转换成一个列表,再去取值
④当数据量比较大的时候,用第二种方法时,字典转换成列表的这个过程需要花大量的时间老转换,当然数据量不大,没有关系,效率差不多

浙公网安备 33010602011771号