学Python4️⃣7️⃣ dict (3) (没有.append() )
作者:小号🎺
前面曾经提到过,dict 的原生函数里,没有 .append() 函数。这一点不像 list 。
这是为什么呢?
可以这样来解释,dict 是随机存储,而list 是顺序存储。
在逻辑上,list 在内存中是按照顺序(下标)依次存放的。所以,list 中要新增一项,可以用.append() 添加在末尾,也可以用 .insert() 插入在某一个指定位置。
但是在 dict 中,键值对(key-value pair)是随机存储,没有所谓的先后顺序。所以在 dict 中,也就没有 .append() ,也没有 .insert() 。
没有 .append() ,也没有 .insert() ,那怎么增加新的信息?
也很简单,直接这样写
adict = {}
adict['new_key'] = 'a_new_value'
因为根据 dict 的定义,键具有唯一性。键的唯一性,就意味着:当指定一个已经存在的键,后面跟着 等号 = ... ,就是对这个键重新赋值(修改一个键所对应的值)。当指定一个不存在的键,后面跟着 等号 = ... ,就是新增一个键值对。
除了这样直接在下标中指定一个键的方式,还可以用 .update()函数来更新字典中的信息。当 .update()函数中的参数中含有新的键值对,即相当于新增。
user = {}user.update(name="Charlie", age=28, gender="male")print(user) # 输出: {'name': 'Charlie', 'age': 28, 'gender': 'male'}
此例中调用.update()时,新增了 姓名、年龄、性别(gender) 三项信息。再来一个例子。
data = [("score", 95), ("grade", "A")] # 此处 data 是一个列表students = {"name": "张小华"}students.update(data)print(students) # 输出: {'name': '张小华', 'score': 95, 'grade': 'A'}
此例中在原有的学生姓名信息之外,新增分数、等级两项信息。
另外,list 和 dict 都自带一个 .pop()函数。pop 原意是“弹出”,是内存(堆栈)操作中的术语。“弹(拼音tán)出”即抛出,不再需要了,删除(delete)了。
不同的是,list 的 .pop() 中的参数是索引(数字),dict 的 .pop() 中的参数是键(通常是一个字符串 str )。
例:字典中通过指定一个键并删除( .pop() )
例:字典中通过指定一个键并删除( .pop() )
# example show: dict.pop('X')cards = {'人仔': 'Labubu', '游戏': 'Black Legend', '周边': '3 bodies', '潮玩': 'ZXMOTO'}cards_popped = cards.pop('周边')print('cards_deleted:', cards_popped)print('CARDS:', cards)
比较:列表中通过指定一个索引位置并删除( .pop(x) )
# example show: list.pop(X)cards = ['人仔: Labubu', '游戏: Black Legend', '周边: 3 bodies', '潮玩: ZXMOTO']cards_popped = cards.pop(2)print('cards_deleted:', cards_popped)print('CARDS:', cards)

作业:
① 制定一份采购预算,或整理一份避坑攻略,或陈述某件商品的优点或吐槽其缺点
② 在①的基础上增加一项
③ 在①或②的基础上删除一项( .pop() )
④ 在③的基础上复制( .copy() )
今日实操
作业①
buys={'耳机':99,'手环':199,'眼镜':999,'笔':500}notes={'保质期':'新鲜','品牌':'大','价格':'适中','款式':'时尚'}goods={'环境':'清净','空气':'清新','风景':'秀丽','房价':'不贵'}bads={'交通':'不便','网络':'龟速','言语':'不通','蚊子':'多'}
作业②③ 略
作业④ 复制字典,合并字典
#Python#学Python#大白话#小号#大白小号学Python#原创#分享