Python-Task6 字典和集合

Python-Task6 字典和集合

学习内容

廖雪峰老师python教程https://www.liaoxuefeng.com/wiki/1016959663602400


字典

python内置字典dict(c++中叫map),使用键-值(key-value)存储,有极快的查找速度。

>>> d={'mike':95,'bob':75,'tracy':85}#这就是一个字典
>>> d
{'mike': 95, 'bob': 75, 'tracy': 85}
>>> d['mike']
95

之所以说dict的速度如此之快,是因为他的查找策略如同查字典一般,内部就是数据结构中的哈希算法。

首先key-value这种存储方式在放进去的时候,会根据key值算出value的存放位置,这样取出的时候才能根据key直接去找到value。

比如上面那个例子,在dict的内部可以直接计算出‘mike’的内存地址,所以直接取出,特别快。

可以通过d['adam']=99的方式将数据放入字典,要注意,一个key和value是一对一的

避免key值不存在的错误,有两种方法:

1.通过in 判断

>>> 'jac'in d
False

2.通过get()方法

>>> d.get('jac') #找不到返回None
>>> d.get('jac',-1) #可以指定错误返回值
-1

使用pop(key)来删除

字典的内部存放顺序与key放入顺序无关

list占空间小,浪费少,查找时间与元素个数成正比
dict以空间换时间

牢记的第一条就是dict的key必须是不可变对象。所以key可以使字符串、整数等不可变量,但list可变不可作为key

集合

set是一组,key的集合,不过没有value,在set中没有重复的key。

另一种理解理解方式是,set是无序和无重复元素的集合(数学意义),并且还可以做交并运算。

>>> s=set([1,2,3,2])
>>> s
{1, 2, 3}

创建set需要先使用list作为输入,重复元素会被过滤掉

使用add(key),进行用于添加元素

使用remove(key),用于删除元素

注意一点:在这里集合和list列表是不同的,显示的顺序也不表示set是有序的。

>>> s     #set的交并运算
{1, 2, 3}
>>> q
{8, 3, 5, 7}
>>> q & s
{3}
>>> q | s
{1, 2, 3, 5, 7, 8}

set和value的唯一区别仅在于没有存储对应的value,set原理和dict一样

重新认识变量

a=‘abc’ 其中a本身是一个变量,‘abc’才是字符串的对象!

replace(‘A’,‘a’)实际上是返回的新的一个字符串。原字符串不变。

所以现在可以总结可变和不可变?

1.可变对象:对对象进行操作,内部的内容是会变化的,比如list

2.不可可变对象:内部内容不会发生变化,比如str

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
字典集合Python中都是一种数据结构,但它们有一些区别。 首先,字典是由键(key)和值(value)配对组成的元素的集合,而集合是一系列无序的、唯一的元素组合。字典可以通过键来访问对应的值,如果键不存在,则会抛出异常;而集合不支持索引操作,只能通过值来判断元素是否存在。 其次,字典集合的性能表现也有所不同。字典的查找、添加和删除操作都可以在常数时间复杂度内完成,而集合的性能也非常高效。因此,在需要高效地进行查找和去重操作时,字典集合都是很好的选择。 此外,字典集合的内部结构都是一张哈希表,但字典存储了键、值和哈希值这三个元素,而集合内只存储了哈希值。这也是导致字典可以通过键来索引值,而集合不支持索引操作的原因。 综上所述,字典集合的区别在于字典是键值对的集合,支持通过键来访问值,而集合是无序的、唯一的元素组合,不支持索引操作。同时,字典集合在性能上都表现出色,适用于不同的场景。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python_数据结构_字典集合的差异对比](https://blog.csdn.net/feizuiku0116/article/details/119777675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Python中的字典集合有什么区别?](https://blog.csdn.net/2301_78316786/article/details/131133549)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值