字典用 {key:value,…} 定义
字典使用键值对(key、value对)存储数据,键值对之间使用,分隔:
- 键 key 是索引:注意索引不再是 0,1,2… 了,虽然可以用数字,但是一般使用字符串
- 值 value 是数据
- 键 和 值 之间使用 : 分隔
- 键必须是唯一的:如果有多个,后者会覆盖前者
- 值 可以取任何数据类型,但 键 只能使用 字符串、数字或 元组
dictionary(字典) 是 除列表以外 Python 之中 最灵活 的数据类型
字典同样可以用来存储多个数据
- 通常用于存储 描述一个 物体 的相关信息
和列表的区别
- 列表 是 有序 的对象集合
- 字典 是 无序 的对象集合
字典常用操作
1、增加元素:
dict={\'name\':\'frog\',\'age\':18}print(dict)#输出结果:#{\'name\': \'frog\', \'age\': 18}#这里 weight 的键值对不存在就是新增,如果存在就是修改(后面有)dict[\'weight\']=130print(dict)#输出结果:#{\'name\': \'frog\', \'age\': 18, \'weight\': 130}
2、删除元素:
a、del 字典[键]
dict={\'name\':\'frog\',\'age\':18}print(dict)#输出结果:#{\'name\': \'frog\', \'age\': 18}如果要删除的键不存在,会报错 KeyError: \'age1\'del dict[\'name\']print(dict)#输出结果:# {\'age\': 18}
b、字典.pop(键)
dict={\'name\':\'frog\',\'age\':18}print(dict)#输出结果#{\'name\': \'frog\', \'age\': 18}如果要删除的键不存在,会报错 KeyError: \'age1\'dict.pop(\'age\')print(dict)#输出结果:# {\'name\': \'frog\'}
注意:pop 删除成功了会返回被删除的值
c、字典.clear
dict={\'name\':\'frog\',\'age\':18}print(dict)#输出结果: {\'name\': \'frog\', \'age\': 18}dict.clear()print(dict)#输出结果: {}
3、修改元素:
a、字典[键] = 数据
dict={\'name\':\'frog\',\'age\':18,\'weight\':100}print(dict)#输出结果:#{\'name\': \'frog\', \'age\': 18, \'weight\': 100}#这里 weight 的键值对不存在就是新增,如果存在就是修改(后面有)dict[\'weight\']=130print(dict)#输出结果:# {\'name\': \'frog\', \'age\': 18, \'weight\': 130}
b、字典.setdefault(键,数据)
dict={\'name\':\'frog\',\'age\':18,\'weight\':100}print(dict)#输出结果:#{\'name\': \'frog\', \'age\': 18, \'weight\': 100}# 如果 name1 键不存在,就添加 name1:20,如果存在就不做处理dict.setdefault(\'name1\',20)print(dict)#输出结果:# {\'name\': \'frog\', \'age\': 18, \'weight\': 100, \'name1\': 20}
c、字典.update(字典2)
dict={\'name\':\'frog\',\'age\':18,\'weight\':100}print(dict)#输出结果:#{\'name\': \'frog\', \'age\': 18, \'weight\': 100}# 里面写字典,如果键值对存在就修改,不存在就增加dict.update({\'weight\':80,\'height\':180})print(dict)#输出结果:#{\'name\': \'frog\', \'age\': 18, \'weight\': 80, \'height\': 180}
4、查询元素:
1、字典[键]:注意不能根据值来查询键
dict={\'name\':\'frog\',\'age\':18,\'weight\':100}# 键不存在会报错print(dict[\'name\'])输出结果: frog
2、字典.get(键)
dict={\'name\':\'frog\',\'age\':18,\'weight\':100}# 使用 get 获取值print(dict.get(\'name\'))#输出结果:#frog# 键不存在不会报错,而是会返回 Noneprint(dict.get(\'name1\'))#输出结果:#None# 键不存在会返回后面设置的 默认值,可以根据返回的值来判断有没有获取成功print(dict.get(\'name1\',\'没有name键\'))#输出结果:#没有name键
3、字典的遍历:字典.keys()、字典.values()、字典.items()
dict={\'name\':\'frog\',\'age\':18,\'weight\':100}# 得到字典的 键、值、键值对print(dict.keys())#输出结果:#dict_keys([\'name\', \'age\', \'weight\'])print(dict.values())#输出结果:#dict_values([\'frog\', 18, 100])# 这个返回的是一个元组,print(dict.items())#输出结果:#dict_items([(\'name\', \'frog\'), (\'age\', 18), (\'weight\', 100)])print(type(dict.keys()))#<class \'dict_keys\'>
注意上面三个都是视图对象的类型,可以使用 for 遍历,也可以用in查询,也可以转换为 list 做高级查询,当然我们一般只需要遍历即可
python 2 的话是直接出list,python3出视图对象,可以
print(type(dict.keys()))#输出结果:#dict={\'name\':\'frog\',\'age\':18,\'weight\':100}for key in dict.keys():print(key)#输出结果:#name#age#weightfor value in dict.values():print(value)print(\'-\'*20)#输出结果:#frog#18#100for item in dict.items():print(item)#返回的是个元组,可以解包和组包#(\'name\', \'frog\')#(\'age\', 18)#(\'weight\', 100)# 对返回的元组遍历,然后解包获得 key、valuefor key,value in dict.items():print(key)print(value)#输出结果:#name#frog#age#18#weight#100
注意:如果直接对一个字典进行 for 遍历,取出来的是 键
字典操作总结:
3.3 循环遍历
遍历 就是 依次 从 字典 中获取所有键值对
# for 循环内部使用的 `key 的变量` in 字典for k in xiaoming:print(\"%s: %s\" % (k, xiaoming[k]))
提示:在实际开发中,由于字典中每一个键值对保存数据的类型是不同的,所以针对字典的循环遍历需求并不是很多
3.4 应用场景
尽管可以使用 for in 遍历 字典
但是在开发中,更多的应用场景是:
使用 多个键值对,存储 描述一个 物体 的相关信息 —— 描述更复杂的数据信息
将 多个字典 放在 一个列表 中,再进行遍历,在循环体内部针对每一个字典进行 相同的处理
card_list = [{\"name\": \"张三\",\"qq\": \"12345\",\"phone\": \"110\"},{\"name\": \"李四\",\"qq\": \"54321\",\"phone\": \"10086\"}]