上篇文章思考题
t = ([1,2],4,6,'lady')
id(t)
2105860316360
t[0].append(4)
id(t)
2105860316360
t
([1, 2, 4], 4, 6, 'lady')
没有问题,元组不可修改,但是列表可修改。
简介
字典由键值对构成,是唯一的映射的类型,作为可变哈希表来实现的。键不可重复,必须可哈希。
创建与赋值
使用{}创建,内包含key:value的键值对,逗号分隔。
d = {1:3,4:5,6:"lady",'killer':9,7:True}
删除
使用del,不建议手动删除整个字典
d1 = {2:3,3:4}
del d1[2]
d1
{3: 4}
del d1
d1
Traceback (most recent call last):
File "", line 1, in
NameError: name 'd1' is not defined
操作符
访问、添加、更新([])
d[1]
3
d[2]=10
d
{1: 3, 4: 5, 6: 'lady', 'killer': 9, 7: True, 2: 10}
d[6]=6
d
{1: 3, 4: 5, 6: 6, 'killer': 9, 7: True, 2: 10}
标准操作符(>,<,<=,>=,==,!=)
,<,<=,>=不支持dict与dict进行比较,==,!=可以判断是否每个key对应的每个value都相等。对于比较可以查看后面的cmp。
d
{1: 3, 4: 5, 6: 6, 'killer': 9, 7: True, 2: 10}
d1 = {1:3,4:5,6:6,'killer':10,7:True,2:10}
d<d1
Traceback (most recent call last):
File "", line 1, in
TypeError: '<' not supported between instances of 'dict' and 'dict'd==d1
False
d>=d1
Traceback (most recent call last):
File "", line 1, in
TypeError: '>=' not supported between instances of 'dict' and 'dict'
d!=d1
True
d1['killer']=9
d==d1
True
判断键是否存在(成员关系操作in,not in)
字典没有has_key函数了
2 in d
True
3 not in d
True
方法
键值对视图
items()
d.items()
dict_items([(1, 3), (4, 5), (6, 6), ('killer', 9), (7, True), (2, 10)])
键视图
keys()
d.keys()
dict_keys([1, 4, 6, 'killer', 7, 2])list(d)
[1, 4, 6, 'killer', 7, 2]
值视图
values()
d.values()
dict_values([3, 5, 6, 9, True, 10])
前面三个返回的都是视图对象。该对象提供字典条目的一个动态视图,这意味着当字典改变时,视图也会相应改变。 大多数情况下我们希望得到的是列表,可以使用list()进行转换,对于keys()来说,list(d)与list(d.keys())是一样的。
返回键对应的值
get(key[,default])
如果 key 存在于字典中则返回 key 的值,否则返回 default。 如果 default 未给出则默认为 None。
d.get('killer')
9
d.get('lady')
设置默认值
setdefault(key,default)
如果字典存在键 key ,返回它的值。如果不存在,插入值为 default 的键 key ,并返回 default 。 default 默认为 None。
就是不更新,只添加,或者说安全的添加防止覆盖,其实自己使用in来实现的话也很简单,python还是贴心的帮你写了。
>>> d.setdefault('killer','frank')
9d.setdefault('lady','yu')
'yu'
d.get('lady')
'yu'
浅拷贝
copy()
返回原字典的浅拷贝。
d1=d.copy()
d1
{1: 3, 4: 5, 6: 6, 'killer': 9, 7: True, 2: 10, 'lady': 'yu'}
删除键值对
pop(key)
如果 key 存在于字典中则将其移除并返回对应value,否则返回 default。 如果 default 未给出且 key 不存在于字典中,则会引发KeyError。
d1.pop('killer')
9
d1.pop('killer')
Traceback (most recent call last):
File "", line 1, in
KeyError: 'killer'
popitem()
从字典中移除并返回一个 (键, 值) 对。 键值对会按 LIFO(Last in,First out 后进先出)的顺序被返回。如果字典为空,则会引发KeyError。
d1.popitem()
('lady', 'yu')
d1.popitem()
(2, 10)
d1.popitem()
(7, True)
d1.popitem()
(6, 6)
d1.popitem()
(4, 5)
d1.popitem()
(1, 3)
d1.popitem()
Traceback (most recent call last):
File "", line 1, in
KeyError: 'popitem(): dictionary is empty'
无论数据库,各种编程语言或其他应用也好,无非就是CRUD,在CUD之前通过R来判断是比较好的习惯。
创建并返回字典
fromkeys(iterable,[None/value])
使用来自 iterable 的键创建一个新字典,并将键值设为 value。第二个参数不填,默认为None。
d1 = d.fromkeys(d.keys(),9)
d1
{1: 9, 4: 9, 6: 9, 'killer': 9, 7: 9, 2: 9, 'lady': 9}d2 = d.fromkeys([1,2,3,4,5])
d2
{1: None, 2: None, 3: None, 4: None, 5: None}
合并
update(other)
使用来自 other 的键/值对更新字典,覆盖原有的键。python3不像c++有multimap(同一个键对应多个value),所以调用update方法的字典就会被覆盖,如果键值相同保留的话可以将value作为列表,若有相同的key,value扩充即可。
d2.update(d1)
d2
{1: 9, 2: 9, 3: None, 4: 9, 5: None, 6: 9, 'killer': 9, 7: 9, 'lady': 9}
清空
clear()
移除字典中的所有元素。
还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!
王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。
对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!
【完整版领取方式在文末!!】
93道网络安全面试题
内容实在太多,不一一截图了
黑客学习资源推荐
最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
😝朋友们如果有需要的话,可以联系领取~
1️⃣零基础入门
① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供:
2️⃣视频配套工具&国内外网安书籍、文档
① 工具
② 视频
③ 书籍
资源较为敏感,未展示全面,需要的最下面获取
② 简历模板
因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆
详情docs.qq.com/doc/DSlhRRFFyU2pVZGhS