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

一、元组的定义和特性

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

特性:

  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.不可变

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

二、hash函数


可以被hash的内容

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

+

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

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

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

三、数据类型-字典

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

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

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

      

创建:


方便查找:


a.sort排序:


增加:


修改:


查找:



删除:


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


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


多级字典嵌套:


修改:



info.:


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


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

for循环:




字典的常见操作

键、值、键值对
    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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值