关于字典的探究(字典排序等)

写python少用元祖,尽量不用列表,多用字典。
python的精华在于字典,字典是哈希,查询会很快。
元祖已经脱离了python的本意。固定长度,它的用处在于,可以作为字典的key值,但是列表就不可以。
python单句执行 和C一样快    但是for循环 会特别慢 
 
#字典是Python 语言中唯一的映射类型。映射类型对象里哈希值(键) 和指向的对象(值)是一对多的关系。 一个字典对象是可变的,它是一个容器类型,能存储任意个数的Python 对象,其中也包括其他容器类型。字典类型和序列类型容器类(列表、元组)的区别是存储和访问数据的方式不同。序列类型只用数字类型的键(从序列的开始起按数值顺序索引)。映射类型可以用其他对象类型做键;一般最常见的是用字符串做键(keys)。和序列类型的键不同,映射类型的键(keys)直接,或间接地和存储的数据值相关联。但因为在映射类型中,我们不再用"序列化排序"的键(keys), 所以映射类型中的数据是无序排列的。  
#字典是Python 中最强大的数据类型之一。  
 
#核心笔记:什么是哈希表?它们与字典的关系是什么?  
#哈希表是一种数据结构:它按照我们所要求的去工作。哈希表中存储的每一条数据,叫做一个值(value),是根据与它相关的一个被称作为键(key)的数据项进行存储的。键和值合在一起被称为“键-值 对”(key-value pairs)。 哈希表的算法是获取键,对键执行一个叫做哈希函数的操作,并根据计算的结果,选择在数据结构的某个地址中来存储你的值。任何一个值存储的地址皆取决于它的键。正因为这种随意性,哈希表中的值是没有顺序的。你拥有的是一个无序的数据集。你所能获得的有序集合只能是字典中的键的集合或者值的集合。方法Keys() 或 values() 返回一个列表,该列表是可排序的。 你还可以用 items()方法得到包含键、值对的元组的列表来排序。由于字典本身是哈希的,所以是无序的。哈希表一般有很好的性能, 因为用键查询相当快。  
 
#Python 的字典是作为可变的哈希表实现的。  
 
#方法名字                         操作  
#dict.clear()                 删除字典中所有元素  

#dict.copy()                  返回字典(浅复制)的一个副本  
#dict.fromkeysc(seq,val=None) 创建并返回一个新字典,以seq 中的元素做该字典的键,val 做该字典中所有键对应的初始值(如果不提供此值,则默认为None)  
#dict.get(key,default=None)   对字典dict 中的键key,返回它对应的值value,如果字典中不存在此键,则返回default 的值(注意,参数default 的默认值为None)  
#dict.has_key(key)            如果键(key)在字典中存在,返回True,否则返回False. 在Python2.2版本引入in 和not in 后,此方法几乎已废弃不用了,但仍提供一个可工作的接口。  
#dict.items()                返回一个包含字典中(键, 值)对元组的列表  
#dict.keys()                  返回一个包含字典中键的列表  
#dict.iter()                  方法iteritems(), iterkeys(), itervalues()与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表。  
#dict.pop(key[, default])    和方法get()相似,如果字典中key 键存在,删除并返回dict[key],如果key 键不存在,且没有给出default 的值,引发KeyError 异常。  
#dict.setdefault(key,default=None)    和方法set()相似,如果字典中不存在key 键,由dict[key]=default 为它赋值。  
#dict.update(dict2)   将字典dict2 的键-值对添加到字典dict,如果key值有相同的,则取dict2的value  
#dict.values()       返回一个包含字典中所有值的列表  
#字典的返回值是无序的,可是使用
sorted()方法进行排序  
 
 
 
#所有不可变的类型都是可哈希的,因此它们都可以做为字典的键。一个要说明的是问题是数字:值相等的数字表示相同的键。换句话来说,整型数字 1 和 浮点数 1.0 的哈希值是相同的,即它们是相同的键。 

转载于:https://my.oschina.net/u/234186/blog/52464

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值