欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python数据类型-元祖和字典类型、hash函数

程序员文章站 2024-02-29 21:52:46
...
一、元组的定义和特性

定义:与列表类似,只不过[]改成()

特性:

  1.可存放多个值
  2.不可变
  3.
按照从左到右的顺序定义元组元素,下标从0开始顺序访问,有序

+

解释为什么要有不可变数据类型元组出现?

元组的创建与常用操作

创建

ages = (11, 22, 33, 44, 55)
#或
ages = tuple((11, 22, 33, 44, 55))

常用操作

#索引
>>> ages = (11, 22, 33, 44, 55)
>>> ages[0]
11
>>> ages[3]
44
>>> ages[-1]
55

#切片:同list  

#循环
>>> for age in ages:
    print(age)


11
22
33
44
55

#长度
>>> len(ages)
5

#包含
>>> 11 in ages
True
>>> 66 in ages
False
>>> 11 not in ages
False

元组的特性详解

1.可存放多个值

如果元组中只有一个值

t = (1,)
t = (1)   #<==>t = 1

元组中不仅可以存放数字、字符串,还可以存放更加复杂的数据类型

2.不可变

元组本身不可变,如果元组中还包含其他可变元素,这些可变元素可以改变

python数据类型-元祖和字典类型、hash函数

二、hash函数

python数据类型-元祖和字典类型、hash函数

可以被hash的内容

刚刚我们已经说过,hash值的计算过程是依据这个值的一些特征计算的,这就要求被hash的值必须固定。

+

可以想见如果“王老五”变成“王老六”了,计算的结果就会发生改变。

因此我们要说,坏消息是可变的数据类型是不可以被hash的,好消息是如果一个值可以hash那么说明这是一个不可变得数据类型

不会用hash没有关系,这里你先知道什么是hash,接下来,我们要学习一种很厉害的数据类型,它就是用这种方式,让我们能够从大量数据中直接快速找到我们想要的数据。

三、数据类型-字典

字典是Python语言中唯一的映射类型。

定义:{key1:value1,key2:value2}

1、键与值用冒号“:”分开;
2、项与项用逗号“,”分开;

      python数据类型-元祖和字典类型、hash函数

创建:

python数据类型-元祖和字典类型、hash函数

方便查找:

python数据类型-元祖和字典类型、hash函数

a.sort排序:

python数据类型-元祖和字典类型、hash函数

增加:

python数据类型-元祖和字典类型、hash函数

修改:

python数据类型-元祖和字典类型、hash函数

查找:

python数据类型-元祖和字典类型、hash函数

python数据类型-元祖和字典类型、hash函数

删除:

python数据类型-元祖和字典类型、hash函数

pop:删除 (删除最后一个,并返回)    popitem随机删

python数据类型-元祖和字典类型、hash函数

python 中range() 函数可创建一个整数列表,一般用在 for 循环中。

python数据类型-元祖和字典类型、hash函数

多级字典嵌套:

python数据类型-元祖和字典类型、hash函数

修改:

python数据类型-元祖和字典类型、hash函数

python数据类型-元祖和字典类型、hash函数

info.:

python数据类型-元祖和字典类型、hash函数

info.update(dic2):表示dic2里有对应info里的值就覆盖,没有对应info里的值就创建

python数据类型-元祖和字典类型、hash函数

info.setdefault(k,new k)中k如果存在,对info 没影响。k如果不存在,对info进行增加

for循环:

python数据类型-元祖和字典类型、hash函数

python数据类型-元祖和字典类型、hash函数

python数据类型-元祖和字典类型、hash函数

字典的常见操作

键、值、键值对
    1、dic.keys() 返回一个包含字典所有KEY的列表;
    2、dic.values() 返回一个包含字典所有value的列表;
    3、dic.items() 返回一个包含所有(键,值)元祖的列表;
    4、dic.iteritems()、dic.iterkeys()、dic.itervalues() 与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表;
新增
    1、dic['new_key'] = 'new_value';
    2、dic.setdefault(key, None) ,如果字典中不存在Key键,由 dic[key] = default 为它赋值;_
删除
    1、dic.pop(key[,default]) 和get方法相似。如果字典中存在key,删除并返回key对应的vuale;如果key不存在,且没有给出default的值,则引发keyerror异常;
    2、dic.clear() 删除字典中的所有项或元素;    
修改
    1、dic['key'] = 'new_value',如果key在字典中存在,'new_value'将会替代原来的value值;
    2、dic.update(dic2) 将字典dic2的键值对添加到字典dic中
查看
    1、dic['key'],返回字典中key对应的值,若key不存在字典中,则报错;
    2、dict.get(key, default = None) 返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None)
循环
    1for k in dic.keys()
    2for k,v in dic.items()
    3for k in dic
长度
    1、len(dic)