06字典概念及增删改查

字典概念及增删改查

列表和字典的选择:

如果要同时保存的多个数据的意义不同就使用字典;如果要同时保存的多个意义相同的数据就使用列表。

概念:

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值