Python 之 字典,集合 (7)

xiaoxiao2021-02-28  16

字典:

元组,列表,字符串是序列类型! 字典是映射类型!

字典的标志性符号是大括号,字典由多个键及其对应的值共同构成,每一对键值组合称为一项。访问字典只需访问键值即可。

在字典中,为一个不存在的key值赋值会怎样?– 会自动创建对应的键(key)并添加相应的值(value)进去。

Python 对键和值有没有类型限制? – Python 对键的要求相对要严格一些, 要求它们必须是可哈希(Hash)的对象,不能是可变类型(包括变量,列表,字典本身等),但是Python对值是没有任何限制的。附上字典的存储原理你知道Python的字典是如何存储的吗?

有三种创建字典的方法:

ditc1 = {1:'one', 2:'two', 3:'three'}说明:1称为键值(key),后面是与键值相对应的值。dict2 = dict((('F',70),('i',105),('s',115)))说明:使用dict()以元组的形式创建字典时,它里面只有一个变量 dict(mapping),所以我们将各个元组以一个括号括起来作为一个变量,这样看起来就有很多层括号啦~dict3 = dict(小仙女='我自己',大帅哥='你猜呢')说明:这是以关键字参数创建字典。

访问字典的几种方法:

keys, values, items 一般用在 for 循环中: for eachkey in dict1.keys(): for eachvalue in dict1.valuess(): for iTem in dict1.items(): 分别打印的是每一项的键值,值,以及整个项。

字典的各种内置方法

fromkeys : fromkeys方法是直接创建一个新的字典,不要试图用它来修改一个原有的字典,因为它会无情的把原来的字典直接覆盖掉。 (1)dict1 = {} a =dict1.fromkeys((1,2,3),'number') print(a) -->{1: 'number', 2: 'number', 3: 'number'} (2)dict1 = {} a =dict1.fromkeys((1,2,3),('one','two','three')) print(a) -->{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three') 不会智能对应分配,而是给每一个都是赋值一样的。因为只有一个参数。并且不能批量的改变key对应的值,使用它是重新建立了一个字典覆盖掉原来的字典。

2.get :如果我们在字典中索引一个不存在的键,Python会报错,现在我们使用get,它是一种更宽松的方式去访问字典。

现在我们访问一个不存在的键。 dict1.get(32) print(dict1.get(32)) None 如果你想要当访问的值不存在时返回一个具体的值,可以自己设定。 dict1.get(32,'没有') '没有' 但是当它是有值时,还会返回原有的值。 dict1.get(31,'没有') 赞

3 . clear : 当我们想要清空一个字典时,我们使用clear方法。dict1.clear()

4 . copy : 拷贝一个字典。

5 . pop,popitem : pop是给定键弹出对应的值,而popitem是弹出一个项,注意,这个项并不一定是第一项,而是随机的。因为在字典里是没有顺序的。它是按照某种优先级排列的。

6 .setdefault : setdefoult 方法和 get 方法有点类似, 区别是如果 setdefault 找不到对应的键时会自动添加。

a = {3:'three', 4:'four'} a.setdefault('小仙女') print(a) {'小仙女':None, 3:'three', 4:'four'} 我们也可以给一个值进去。 a.setdefault(5,'five') {'小仙女':None, 3:'three', 4:'four', 5:'five'}

7 . update : update是利用一个映射关系或一个字典去更新一个字典。

b = {'小仙女''我'} a.update(b) {'小仙女':'我', 3:'three', 4:'four', 5:'five'}

集合:你就是唯一

如何创建一个集合 1.将一堆元素用花括号括起来。 2.使用set()工厂函数。set中可传递序列(列表,字符串,元组)。 set1 = set([1,2,3,4,5,5]) {1,2,3,4,5} set 处理过后是无序的!

如果希望创建的函数是不变的,请使用 frozenset().

集合几乎所有的作用就是确保里边包含的元素的唯一性,集合内不可能存在两个相同的元素!!

num2 = {1,2,3,4,5,5,4,3,2} num2 = {1,2,3,4,5} 集合是无序的,不要试图去索引某个值,会报错 >>> num_set = set([1, 2, 3, 4, 5]) >>> num_set[0] >会报错

如何确定一个集合里有多少元素? 用len()!

请问 set1 = {[1,2]} 和 set1 = set([1,2]) 结果一样吗?

不一样!!前者会报错!!后者是一个集合。 >>> set1 = {[1, 2]} Traceback (most recent call last): File "<pyshell#17>", line 1, in <module> set1 = {[1, 2]} TypeError: unhashable type: 'list'

从报错信息上我们可以看到,‘列表不是可哈希的类型’,没错,列表是可变的,怎么可以是可哈希的呢~~等等,我们忽然想起来字典的存储方式也是哈希的呀!!

再想一想觉得很有道理呀!利用哈希函数计算,相同的元素得到的哈希值(存放地址)是相同的,所以在集合中所有相同的元素都会覆盖掉,因此有了集合的唯一性。

接着想就更有道理啦,通过哈希函数计算出的地址不可能是按顺序排放的,所以集合才强调是无序的!!!

举两个集合的内置方法。add 和 remove

>>> num1.add(6) >>> num1 {0, 1, 2, 3, 4, 5, 6} >>> num1.remove(6) >>> num1 {0, 1, 2, 3, 4, 5}

还有更多详细的内置方法请看链接集合类型内置方法总结 再次要特别感谢小甲鱼老师,看着他的教程,通俗易懂。

转载请注明原文地址: https://www.6miu.com/read-850186.html

最新回复(0)