查找效率:set>dict>list 单次查询中: list set dict O(n) set做了去重,本质应该一颗红黑树 (猜测,STL就是红黑树),复杂度 O(logn): dict类似对key进行了hash,然后再对hash生成一个红黑树进行查找, 其查找复杂其实是O(logn),并不是所谓的O(1). O(1)只是理想的实现,实际上很多hash的实现是进行了离散化的. dict比set多了一步hash的过程,so 它比set慢,不过差别不大. 那么为什么dict.keys()查询速度…
之前为了学习Python,试着拿Flask作框架搞小网站,感觉还不错,基本就抛弃了PHP.前段时间做了一个微信小程序,想着yii框架拿来写几十个小接口是不是浪费了,就继续用flask写api了,哪想到填坑无数啊. Python的ORM框架就属Sqlalchemy牛逼,网上资料也多,想着和yii里面应该差不多,就拿来用了.第二天万万没想到,php里面简单的一句asArray就能解决的问题,flask_sqlalchemy居然没有解决方案,查询的结果对象无法直接JSON序列化.这期间从南到北地找,大…
原字典: d1 = { 'en':'英语', 'cn':'中文', 'fr':'法语', 'jp':'日语' } 经过相互对换: d1_inverse = {values:keys for keys,values in d1.items()} 结果就是: print(d1_inverse) # {'英语': 'en', '中文': 'cn', '法语': 'fr', '日语': 'jp'}…
让 Python 的数据库查询返回字典记录: https://yanbin.blog/python-database-query-return-dictionary-result/#more-9179 前言:利用zip函数将两个列表(list)组成字典(dict) # 使用zip函数, 把key和value的list组合在一起, 再转成字典(dict). keys = ['a', 'b', 'c'] values = [1, 2, 3] dictionary = dict(zip(keys, v…
Redis的内存存储结构是个大的字典存储,也就是我们通常说的哈希表.Redis小到能够存储几万记录的CACHE,大到能够存储几千万甚至上亿的记录(看内存而定),这充分说明Redis作为缓冲的强大.Redis的核心数据结构就是字典(dict),dict在数据量不断增大的过程中.会遇到HASH(key)碰撞的问题,假设DICT不够大,碰撞的概率增大,这样单个hash 桶存储的元素会越来愈多,查询效率就会变慢.假设数据量从几千万变成几万,不断减小的过程.DICT内存却会造成不必要的浪费.Redis的d…
一.字典定义 >>> dict={} 二.字典元素添加 >>> dict['性别']='男' >>> dict {'性别': '男'} >>> dict['信息']=[{'姓名':'Leo'},{'职业','未知'},{'年龄',10086}] >>> dict {'性别': '男', '信息': [{'姓名': 'Leo'}, {'职业', '未知'}, {'年龄', 10086}]} 三.字典元素删除 >&…
dict dict key 必须是不可变数据类型,可哈希value:任意数据类型 dict 优点:使用二分查询来搜索数据存储了大量的关系型数据特点:无序的 数据类型划分:可变数据类型,不可变数据类型不可变数据类型:元祖,bool int str 可哈希可变数据类型: list dict set 不可哈希 编辑一个字典:这样书写方便看清层级关系 dic = { 'name':['大猛','小孟'], 'py9':[{'num':71,'avg_age':18,}, {'num': 71, 'avg…
原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/article/details/51018337 今天我们来讲讲Redis中的哈希表. 哈希表在C++中相应的是map数据结构.但在Redis中称作dict(字典).Redis仅仅是用了几个简单的结构体和几种常见的哈希算法就实现了一个简单的相似高级语言中的map结构.以下我们来详细分析一下dict的实现. 在学习数据结构的时候.我们接触过一种称作"散列表"的结构,能够依据关键字而直接訪问记录. 说的详细…
一.字典: 1. 字典 dict 用{}来表示 键值对数据 {key:value} 唯一性 键   都必须是可哈希的 不可变的数据类型就可以当做字典中的键 值   没有任何限制 1.1  字典的创建: (1)dic = {k:v} (2)fromkeys fromkeys() 函数用于创建一个新字典,以序列 seq 中的每个元素做字典的键,value 为字典所有键对应的初始值. 语法:dict = dict.fromkeys(seq, value ) seq -- 字典键值列表. value -…
字典的特征: key-value结构key必须可hash,且必须为不可变数据类型.必须唯一. # hash值都是数字,可以用类似于2分法(但比2分法厉害的多的方法)找.可存放任意多个值.可修改.可以不唯一无序查找速度快 常用方法: info = {'stu01': 'alex', 'stu02': 'jack', 'stu03': 'jucy'} # 关键字:info.keys(),值:info.values() print('stu01' in info) # True print(info[…
字典(Dictionary)是一种映射结构的数据类型,由无序的“键-值对”组成.字典的键必须是不可改变的类型,如:字符串,数字,tuple:值可以为任何python数据类型. 1.新建字典 1 2 3 >>> dict1={} #建立一个空字典 >>> type(dict1) <type 'dict'> 2.增加字典元素:两种方法 1 2 3 4 5 6 7 8 >>> dict1['a']=1 #第一种 >>> dict…
不可变数据类型:tuple.bool.int.str --可哈希类型可变数据类型:list.dict.set --不可哈希类型dict-key 必须是不可变数据类型,可哈希dict-value 任意数据类型dict 优点:二分查找.存储大量的关系型数据 特点:无序的-没有索引,只能按照键值对查找增:dict[key] = value dict.setdefault(key) dict.setdefault(key ,value)删:dict.pop(key) dict.pop(key,retur…
大家都知道redis默认是16个db,但是这些db底层的设计结构是什么样的呢? 我们来简单的看一下源码,重要的字段都有所注释 typedef struct redisDb { dict *dict; /* The keyspace for this DB 字典数据结构,非常重要*/ dict *expires; /* Timeout of keys with a timeout set 过期时间*/ dict *blocking_keys; /* Keys with clients waitin…
Python中内置数据类型list,tuple,dict,set的区别和用法 Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set.这里对他们进行一个简明的总结. List 字面意思就是一个集合,在Python中List中的元素用中括号[]来表示,可以这样定义一个List: ? 1 L = [12, 'China', 19.998] 可以看到并不要求元素的类型都是一样的.当然也可以定义一个空的…
dict全称dictionary,使用键-值(key-value)存储,有极快的查找速度. 以下整理几种常用的dict用法 定义 空dict >>> dict={} 普通dict >>> dict={'} >>> dict {', 'adele': 'hello'} 嵌套 >>> a_dict={1:"{11:'a',12:'b'}",2:"2B",3:"3C"} >&…
Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set.这里对他们进行一个简明的总结. List 字面意思就是一个集合,在Python中List中的元素用中括号[]来表示,可以这样定义一个List: L = [12, 'China', 19.998] 可以看到并不要求元素的类型都是一样的.当然也可以定义一个空的List: L = [] Python中的List是有序的,所以要访问List的话显然…
一.创建字典: d = { "name": "morra", #字典是无序的 "age": 99, "gender": 'm' } a = dict() b = dict(k1=123,k2="morra") 二.基本操作: 索引 d = { "name": "morra", "age": 99, "gender": 'm' }…
class dict(object): """ dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object's (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k]…
from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html Python中dict详解 python3.0以上,print函数应为print(),不存在dict.iteritems()这个函数. 在python中写中文注释会报错,这时只要在头部加上# coding=gbk即可 #字典的添加.删除.修改操作dict = {"a" : "apple", "b" : &…
创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_start = sample_list[0] end_value = sample_list[-1] 删除列表的第一个值 del sample_list[0] 在列表中插入一个值 sample_list[0:0] = ['sample value'] 得到列表的长度 list_length = len(sa…
2016/1/27学习内容 第二章 Python序列-tuple tuple创建的tips a_tuple=('a',),要这样创建,而不是a_tuple=('a'),后者是一个创建了一个字符 tuple常用操作 类似list,但是不能进行修改.能作为字典的key值 当然如果tuple中的元素有list,要另当别论 序列解包 > - 可以用序列解包对多个变量同时进行赋值 - 序列解包也可以用于列表和字典.字典默认是对key操作,如果需要key-value操作,需要items()方法,如果仅对va…
字典 常用操作: 索引 新增 删除 键.值.键值对 循环 长度 字典由键值对组成,由一个键(名称)和 一个值组成,与列表和元组不同的是里面的元素是有键的(名称) 所以当要打印字典时,打印字典变量加[键]即可 #!/usr/bin/env python # -*- coding:utf-8 -*- a = { ", ", " } print(a["ls"]) #打印出 2 打印出了ls键的值 创建字典 #!/usr/bin/env python # -*-…
字典  一.创建字典  方法①:  >>> dict1 = {}  >>> dict2 = {'name': 'earth', 'port': 80}  >>> dict1, dict2  ({}, {'port': 80, 'name': 'earth'})  方法②:从Python 2.2 版本起  >>> fdict = dict((['x', 1], ['y', 2]))  >>> fdict  {'y':…
一.创建字典: d = { "name": "morra", #字典是无序的 "age": 99, "gender": 'm' } a = dict() b = dict(k1=123,k2="morra") 二.字典常用操作: 修改或增加字典: dict = {'ob1':'computer', 'ob2':'mouse', 'ob3':'printer'} dict['ob1']='book' dict…
Python dict方法总结 一.字典介绍 1.字典概述 ①字典是python中唯一内建的映射类型.又称关联数组或散列②映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表③字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型.④字典通过键实现元素存取,可变类型容器,长度可变,异构,嵌套 2.字典类型与序列类型的区别: ①存取和访问数据的方式不同.②序列类型只用数字类型的键(从序列的开始按数值顺序索…
dict 字典表属于映射分类 dict的声明 >>> #dict类型 是 {}中包含若干个键值对 >>> d = dict() >>> d = {} >>> type(d) <class 'dict'> >>> #看来 一个键值对也没有的{}也是dict类型的 >>> >>> # 1 用{}来声明键值对 >>> man = {'name':'Mark'…
list   list是一种有序的集合,可以随时添加和删除其中的元素 classmates = ['Michael', 'Bob', 'Tracy'] len()函数可以获得list元素的个数.list长度比索引小1. list的索引是从0开始的,-1做索引,获取最后一个元素.索引超出范围,会报IndexError的错误. 例:(切片) >>>L=['Google', 'Runoob', 'Taobao']  >>> L[2] 'Taobao'  >>>…
一.字符串类型(str) class str(basestring): """ str(object='') -> string Return a nice string representation of the object. If the argument is a string, the return value is the same object. """ def capitalize(self): ""&q…
一.元组: tuple Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组 tup2 = (111, 22, 33, 444, 55, 6, 77 ) for x in (tup2): #遍历 print(x) list2 = [111, 22, 33, 444, 55, 6, 77 ] tup2 = tuple(list2) #将列表转变为元组 二.列表: list 遍历列表: #遍历列表 list1 = [1…
目录 引言 String 有哪些有用的方法? 如何拼接字符串? 如何分隔字符串? 如何获取字符串长度 如何将 list 拼接成字符串? 如何替换字符串? 如何去除字符串中的空格? 如何子字符串是否包含在父字符串中? python 有哪些有用的容器? 列表 list 如何遍历一个列表 如何对列表切片? 如何给列表添加元素? 删掉元素 字典 dict 创建 dict 添加元素 遍历 dict 元组 如何创建元组? 元组有什么用? 其他 全局变量是如何处理的? 结语 引言 想学爬虫还是 python…