[python教程入门学习]Python标准库映射类型与可散列数据类型的关系

364 篇文章 14 订阅
362 篇文章 18 订阅

本文章向大家介绍Python标准库映射类型与可散列数据类型的关系,主要包括Python标准库映射类型与可散列数据类型的关系使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
这里有两个概念似懂非懂,在这里明确一下:

映射类型:
  Python>3.2中,collections.abc模块有Mapping和MutableMapping两个抽象基类(Python2.6~3.2隶属于collections模块),作用是为dict和其他类似类型定义形式接口。

它们构建一个映射类型所需的最基本接口,可以跟instance一起被用来判断某个数据是不是广义上的映射类型:

from collections import abc

my_dict = {}
print(isinstance(my_dict, abc.Mapping))  
# True

判断类型不是只有type。对于新手小白想更轻松的学好Python基础,Python爬虫,web开发、大数据,数据分析,人工智能等技术,这里给大家分享系统教学资源,架下我尉(同英): 2763177065 【教程/工具/方法/解疑】

可散列数据类型:
“”"
可散列的数据类型:
如果一个对象是可散列的,在这个对象的生命周期中,它的散列值是不变的,而且这个对象需要实现__hash__()方法,qe()方法.
如果两个可散列对象是相等的,那么它们的散列值一定是一样的.
“”"

tt = (1, 2, (30, 40))
print(hash(tt))  
# 8027212646858338501

t1 = (1, 2, [30, 40])  
# 元组只有当一个元组包含所有元素都是可散列类型的情况下,才是可散列的。
# print(hash(t1))

tf = (1, 2, frozenset([30, 40]))
print(hash(tf))  
# -4118419923444501110

“”"
原子不可变数据类型(str、bytes和数值类型)都是可散列类型,frozenset(生成不可变集合,冻结的集合)也是可散列的,其可容纳可散列类型
Python里所有不可变类型都是可散列的,这个说法不准确
“”"

a = dict(one=1, two=2, three=3)
b = {'one':1, 'two':2, 'three':3}
c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
d = dict([('two', 2), ('one', 1), ('three', 3)])
e = dict({'three':3, 'one':1, 'two':2})
print(a, '\n', b, '\n', c, '\n', d, '\n', e)
print(a ==b == c ==d == e)  
# True

映射类型与可散列数据类型关系:
  标准库里所有映射类型都是利用dict来实现的,它们有个共同限制,只有可散列的数据类型才能用作这些映射类型的键,值不需要是可散列的数据类型。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值