文章目录
字典概念及增删改查
列表和字典的选择:
如果要同时保存的多个数据的意义不同就使用字典;如果要同时保存的多个意义相同的数据就使用列表。
概念:
1.什么字典(dict)
1)字典是python提供的容器型数据类型中的一种;
2)字典将**{}作为容器的标志**,里面多个键值对(键:值)用逗号隔开:{键1:值1, 键2:值2, 键3:值3, …}
3)字典是可变的(支持增删改); 字典无序(元素的顺序不影响结果;不支持索引操作)
4)字典的元素:
a.只能是键值对,键值对必须成对出现 (值才是真正想要保存的数据,键是用来对数据进行区分和说明)
b.键只能是不可变类型的数据(一般使用字符串); 键是唯一的
c.值可以是任何类型的数据
# 空字典
dict1 = {}
print(dict1)
# 字典无序
print({'a': 10, 'b': 20} == {'b': 20, 'a': 10}) # True
print([10, 20] == [20, 10]) # False
# 键必须是不可变类型的数据
dict1 = {10: 20, 'ab': 30, (10, 20): 40}
print(dict1)
# 键是唯一的
dict1 = {'a': 10, 'b': 20, 'a': 30}
print(dict1)
字典增删改查
查 找
获取字典的值
1)查单个
获取字典中某一个值
a. 字典[键] - 获取字典中指定键对应的值,如果键不存在程序直接报错
b. 字典.get(键) - 获取字典中指定键对应的值,如果键不存在程序不会报错,返回None
c. 字典.get(键, 默认值) - 获取字典中指定键对应的值,如果键不存在返回默认值
dog = {'name': '旺财', 'age': 3, 'breed': '哈士奇', 'color': '黑白'}
print(dog['breed'])
# print(dog['price']) # 报错!
print(dog.get('breed'))
print(dog.get('price')) # None
print(dog.get('age', 1))
print(dog.get('price', 1000)) # 1000
2)遍历
for 变量 in 字典:
循环体(变量依次获取到的是字典的键)
dog = {'name': '旺财', 'age': 3, 'breed': '哈士奇', 'color': '黑白'}
for x in dog:
print(x, dog[x])
增、改
1)字典[键] = 值
当键存在的时候就修改指定键对应的值;当键不存在的时候就添加键值对
stu = {'name': '张三', 'age': 28, 'gender': '男'}
print(stu) # {'name': '张三', 'age': 28, 'gender': '男'}
键存在,修改键对应的值
stu['name'] = '李四'
print(stu) # {'name': '李四', 'age': 28, 'gender': '男'}
键不存在,添加键值对
stu['height'] = 170
print(stu) # {'name': '李四', 'age': 28, 'gender': '男', 'height': 170}
2)字典.setdefault(键, 值)
在字典中添加键值对(如果键已经存在不会修改键对应的值,如果键不存在就添加键值对)
stu = {'name': '张三', 'age': 28, 'gender': '男'}
print(stu) # {'name': '张三', 'age': 28, 'gender': '男'}
stu.setdefault('name', '李四')
print(stu) # {'name': '张三', 'age': 28, 'gender': '男'}
stu.setdefault('height', 170)
print(stu) # {'name': '张三', 'age': 28, 'gender': '男', 'height': 170}
练习:给所有没有折扣的商品添加discount为1的键值对
goods_list = [
{'name': '泡面', 'price': 4, 'count': 5, 'discount': 0.8},
{'name': '火腿肠', 'price': 1.5, 'count': 2},
{'name': '面包', 'price': 6, 'count': 3, 'discount': 0.7},
{'name': '矿泉水', 'price': 1, 'count': 10},
{'name': '辣条', 'price': 0.5, 'count': 20}
]
for x in goods_list:
x.setdefault('discount', 1)
print(goods_list)
删除
1)del 字典[键]
删除字典中指定键对应的键值对
stu = {'name': '张三', 'age': 28, 'gender': '男'}
print(stu)
del stu['gender']
print(stu)
2) 字典.pop(键)
取走字典中指定键对应的值
stu = {'name': '张三', 'age': 28, 'gender': '男'}
print(stu)
result = stu.pop('gender')
print(stu, result)