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。
可散列数据类型:
"""
可散列的数据类型:
如果一个对象是可散列的,在这个对象的生命周期中,它的散列值是不变的,而且这个对象需要实现__hash__()方法,__qe__()方法.
如果两个可散列对象是相等的,那么它们的散列值一定是一样的.
""" tt = (1, 2, (30, 40))
print(hash(tt)) # 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来实现的,它们有个共同限制,只有可散列的数据类型才能用作这些映射类型的键,值不需要是可散列的数据类型。
Python标准库映射类型与可散列数据类型的关系的更多相关文章
- python第六天 函数 python标准库实例大全
今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...
- Python 标准库一览(Python进阶学习)
转自:http://blog.csdn.net/jurbo/article/details/52334345 写这个的起因是,还是因为在做Python challenge的时候,有的时候想解决问题,连 ...
- python 标准库大全
python 标准库 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 string ...
- Python 标准库之 xml.etree.ElementTree
Python 标准库之 xml.etree.ElementTree Python中有多种xml处理API,常用的有xml.dom.*模块.xml.sax.*模块.xml.parser.expat模块和 ...
- Python 标准库 BaseHTTPServer 中文翻译
Python 标准库 BaseHTTPServer 中文翻译. 注意: BaseHTTPServer模块在Python3中已被合并到http.server,当转换你的资源为 Python3 时 2to ...
- Python标准库、第三方库和外部工具汇总
导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...
- Python 标准库、第三方库
Python 标准库.第三方库 Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具.这些库可用于文件读写 ...
- 140种Python标准库、第三方库和外部工具
导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...
- python标准库00 学习准备
Python标准库----走马观花 python有一套很有用的标准库.标准库会随着python解释器一起安装在你的电脑上的.它是python的一个组成部分.这些标准库是python为你准备的利器,可以 ...
随机推荐
- centos7.5图形界面与命令行界面转换
查看当前状态下的显示模式: # systemctl get-default 转换为图形界面: # systemctl set-default graphical.target 转换为命令行界面: # ...
- Cocos Creator两个类相互引用(调用)
如果两个类相互引用,脚本加载阶段就会出现循环引用,循环引用将导致脚本加载出错:///////////Game.jsvar Item = require("Item");var Ga ...
- nuxtJs中直接使用自带的@nuxtjs/axios
最初我以为在nuxtjs中是需要重新npm install axios,但是其实nuxtjs自己集成了这个数据渲染方法 你只需在nuxt.config.js中配置一下就可以了 modules: [ / ...
- C#中MemoryStream类的介绍
MemoryStream位于System.IO命名空间,为系统内存提供流式的读写操作.常作为其他流数据交换时的中间对象操作. 1.MemoryStream类封装一个字节数组,在构造实例时可以使用一个字 ...
- 分治法——快速排序(quicksort)
先上代码 #include <iostream> using namespace std; int partition(int a[],int low, int high) { int p ...
- Lua C/C++互相调用
先来说下大致脚本引擎框架,此次采用如下,即运行C++代码启动程序,然后加载Lua脚本执行! 1.基础 Lua脚本中只能调用 int (*lua_CFunction) (lua_State *L) 这种 ...
- 2014-2015 ACM-ICPC, Asia Xian Regional Contest GThe Problem to Slow Down You
http://blog.csdn.net/u013368721/article/details/42100363 回文树 建立两棵回文树,然后count处理一遍就可以了,然后顺着这两棵树的边走下去就 ...
- python hello 的三种方法
1)直接 print("hello") 2)使用main函数: def main(): print("Helloa你好") if __name__ == &qu ...
- python爬虫——论抓包的正确姿势和学好Javascript的重要性(1)
没事想爬下数据,就入了scrapy坑,跟着https://zhuanlan.zhihu.com/data-factory这篇教程走,中间被小数量的网站坑过,不过还是写出了爬虫~~ 切糕王子:毫无防御, ...
- java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory
运行servler报错 java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory 或 java.lan ...