python 字典转字符串为什么这么快

46被浏览6877分享邀请回答78 条评论分享收藏感谢收起问:numpy数组和字典哪个读取速度更快?【python吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:157,109贴子:
问:numpy数组和字典哪个读取速度更快?收藏
python_总监级名师全程面授,项目实战案例式教学,企业需求无缝对接,助你无忧就业!python,0基础23周快速实现高薪就业,0元试听两周.名额有限,欲报从速.点击抢座
numpy.array快
随机查找当然是字典了,如果顺序那就是数组,换句话说你不知道里面是怎么排列的就用字典,比如随机生成的数列,你不知道某个数字有没有,在那里,那字典更好。但是你自己知道数字在哪里,那就数组了。
登录百度帐号推荐应用python&大字典和大列表数据查找速度比较zz
做项目的时候发现一个问题,
对一个很大的列表和一个很大的字典进行查找,所耗费时间,字典远远小于列表,上测试代码:
# coding:utf-8
import time
testDict = {}
testList = []
for i in range(1000000):
&&&&testDict[n]
&&&&testList.append(n)
startTime = time.time()
if '100223' in testDict:
print time.time()-startTime
startTime = time.time()
if '100223' in testList:
print time.time()-startTime
3.e-05(也就是:0.5996)
通过测试代码能明显看出python的字典查找比列表快多了,python字典是哈希表,所以其查找速度很快。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。字典 Python中最快的字典排序方法 - 为程序员服务
为程序员服务
Python中最快的字典排序方法
def sbv0(adict,reverse=False):
”’ proposed at Digital Sanitation Engineering
/2007/11/sorting-python-dict-by-value.html ”’
return sorted(adict.iteritems(), key=lambda (k,v): (v,k), reverse=reverse)def sbv1(d,reverse=False):
explicit list expansion ”’
L = [(k,v) for (k,v) in d.iteritems()]
return sorted(L, key=lambda x: x[1] , reverse=reverse)
def sbv2(d,reverse=False):
generator ”’
L = ((k,v) for (k,v) in d.iteritems())
return sorted(L, key=lambda x: x[1] , reverse=reverse)
def sbv3(d,reverse=False):
”’ using a lambda to get the key, rather than “double-assignment” ”’
return sorted(d.iteritems(), key=lambda x: x[1] , reverse=reverse)
def sbv4(d,reverse=False):
”’ using a formal function to get the sorting key, rather than a lambda”’
def sk(x): return x[1]
return sorted(d.iteritems(), key=sk , reverse=reverse)
def sk(x): return x[1]
def sbv5(d,reverse=False):
”’ using a formal function, defined in outer scope
to get the sorting key, rather than a lambda
return sorted(d.iteritems(), key=sk , reverse=reverse)
from operator import itemgetter
def sbv6(d,reverse=False):
”’ proposed in PEP 265, using
the itemgetter ”’
return sorted(d.iteritems(), key=itemgetter(1), reverse=True)
D = dict(zip(range(100),range(100)))
from profile import run
run(“for ii in xrange(10000):
sbv0(D, reverse=True)”)
run(“for ii in xrange(10000):
sbv1(D, reverse=True)”)
run(“for ii in xrange(10000):
sbv2(D, reverse=True)”)
run(“for ii in xrange(10000):
sbv3(D, reverse=True)”)
run(“for ii in xrange(10000):
sbv4(D, reverse=True)”)
run(“for ii in xrange(10000):
sbv5(D, reverse=True)”)
run(“for ii in xrange(10000):
sbv6(D, reverse=True)”)
具体的结果, 直接拷贝代码到你的本机下运行即可知道. 在我这里, sbv6的时间是0.578s, 最慢的是用generator的sbv2, 22s左右, 其他时间是差不多的, 都是11s左右.
总的来说, PEP 265 介绍的方法基本是别的方法十倍左右的速度. 看来, 还是官网的东西比较可信阿:)
您可能的代码
相关聚客文章
荣誉:1616
相关专栏文章python 字典(dict)遍历的四种方法性能测试报告
投稿:hebedich
字体:[ ] 类型:转载 时间:
本文主要是针对Python的字典dict遍历的4种方法进行了性能测试,以便分析得出效率最高的一种方法
python中,遍历dict的方法有四种。但这四种遍历的性能如何呢?我做了如下的测试
l = [(x,x) for x in xrange(10000)]
d = dict(l)
from time import clock
t0=clock()
for i in d:
t = i + d[i]
t1=clock()
for k,v in d.items():
t2=clock()
for k,v in d.iteritems():
t3=clock()
for k,v in zip(d.iterkeys(),d.itervalues()):
t4=clock()
print t1-t0, t2-t1, t3-t2, t4-t3
将这段脚本运行5次,结果如下:
python test.py
0.33 0.12 0.57 0.97
python test.py
0.28 0.46 0.66 0.17
python test.py
0.27 0.62 0.63 0.48
python test.py
0.9 0.05 0.06 0.41
python test.py
0.55 0.77 0.14 0.33
显然第一种方法效率最高,第三种方法略差一点但相差无几,方法二四性能就差得多
不过实际的差别不是太大,不必过于纠结
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 python 获取字典的key 的文章

 

随机推荐