当前位置: 首页 > 图灵资讯 > 行业资讯> 深入理解Python的set和dict

深入理解Python的set和dict

发布时间:2025-09-26 11:09:41

常用的dict操作

引言

clear(): 清空字典

copy(): 返回一份浅拷贝

fromkeys(): 将可迭代对象中的每一个元素作为key和同一个value拼成字典

get(): 根据key返回value,如果没有相应的键值对,则返回None,也可以指定默认返回值,与索引访问相比,无异常。

items():返回dict_items类型,支持迭代,以元组的形式组织键值

setdefault(): 获取key对应的value值,首先调用get()。如果没有这个键值对,则添加它

update(): 由键对元组成的合并字典或可迭代对象

使用案例

#1.clear()
d={name:"MetaTian",age:"22"}
d.clear()

#2.copy()
new_dict=d.copy()
new_dict["age"]=18

print(new_dict)
print(d)
#resutl:
#{'age':18,'name':'MetaTian'}
#{'age':'22','name':'MetaTian'}

#3.fromkeys()
d=dict.fromkeys(range(3),"MetaTian")
print(d)
#result:
#{0:'MetaTian',1:'MetaTian',2:'MetaTian'}

#4.get()
print(d.get(2))
print(d.get(3))
print(d.get(3,"null"))

#result:
#MetaTian
#None
#null

#5.items()
print(type(d.items()))
print(d.items())
#result:
#<class'dict_items'>
#dict_items(0,'MetaTian'),(1,'MetaTian'),(2,'MetaTian')])

#6.setdefault()
d={}
value=d.setdefault("name","MetaTian")#如果没有name这个key,则添加
print(value,d)
#result:
#MetaTian{'name':'MetaTian'}

#7.update()
d1={1:"a"}
d2={2:"b"}

d1.update(d2)
d2.update([(3,"c"),(4,"d")])

print(d1)
print(d2)
#result:
#{1:'a',2:'b'}
#{2:'b',3:'c',4:'d'}

set和frozenset

引言

set是可变集合,frozenset是不可变集合

集中元素无序,不重复

使用案例

"""
通过set(Iterable)构建可变集合对象
通过frozenset通过(Iterable)构建不可变集合对象
"""
s=set("12345666")
fs=frozenset(['a','b','c','a'])#不可变类型,可作为dictkey
print(s)
print(fs)

#result:
#{'6','1','4','5','3','2'}
#frozenset({'b','a','c'})

"""
在set中添加元素
add()
update()
"""
s1,s2=set("123"),set("234")
s1.update(s2)
s2.add('5')

print(s1)
print(s2)

#result:
#{'1','2','3','4'}
#{'2','3','5','4'}

"""
集合的运算
-差
&交
|并
"""
s1,s2=set("123"),set("234")
print(s1-s2)
print(s1&s2)
print(s1|s2)

#result:
#{'1'}
#{'2','3'}
#{'3','1','2','4'}

实现dict和set的原理

引言

dict和set的搜索性能远远大于list

dict和set底层通过散列表存储,因此dict的key也需要可哈希,不可变的对象是可哈希

哈希的原理.

以字典为例.

在存储之前,Key的值应该通过哈希函数计算,以获得存储索引。如果结果已经使用,则应处理冲突,重新计算,然后存储

通过实现_____________hash__()可以存储在dict和set中.

所以,特定的存储顺序和添加元素的顺序可能与.

相关文章

Python中reduce函数和lambda表达式的学习

Python中reduce函数和lambda表达式的学习

2025-09-26
Python小白必学的面向对象

Python小白必学的面向对象

2025-09-26
一个例子解释python装饰器

一个例子解释python装饰器

2025-09-26
深入理解Python的set和dict

深入理解Python的set和dict

2025-09-26
Python中正则表达式的巧妙使用

Python中正则表达式的巧妙使用

2025-09-25
5分钟搞定Python中函数的参数

5分钟搞定Python中函数的参数

2025-09-25