为什么字典比python中设置的时间少?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

为什么字典比python中设置的时间少?

2019-01-21 14:56:51 1695 3

字典和集合都在Python中实现为哈希表,插入时间和查找时间为O(1)。我正在编写一个程序来计算字符串是否包含所有唯一字符,并且我使用一个集来跟踪到目前为止看到的所有字符。我观察到的是,如果我使用字典而不是集合,程序的整体运行时间会快一些。有人可以解释一下这个原因吗?

代码使用字典:

def TestUniqueCharacters(characters):

chars = {}
for character in characters:
    if character not in chars:
        chars[character] = 1
    else:
        return False
return True

for i in range(30000000):

TestUniqueCharacters("qwertyuiopasdfghjklzxcvbnm1234567890-=[];',.!@#$%^&*()")

代码使用集合

def TestUniqueCharacters(characters):

chars = set()
for character in characters:
    if character not in chars:
        chars.add(character)
    else:
        return False
return True

for i in range(30000000):

TestUniqueCharacters("qwertyuiopasdfghjklzxcvbnm1234567890-=[];',.!@#$%^&*()")

用字典执行时间

D2RiT
设定的执行时间

V5zMB设定的执行时间

取消 提交回答
全部回答(3)
  • 腾虎
    2019-07-17 23:26:05

    可加入datetime库 具体跑一下各环节时间.
    另外你的集合用add...字典直接用[] 赋值..应该效率是不一样的..

    0 0
  • 客官来玩啊
    2019-07-17 23:26:05

    楼上说明了问题所在
    具体题主可以使用 cProfile 功能来进行类似问题分析
    image

    0 0
  • 一码平川MACHEL
    2019-07-17 23:26:05

    建议改变:

    chars = set()
    for character in characters:

    if character not in chars:
        chars.add(character)

    至:

    chars = set()
    charsadd = chars.add # new line here
    for character in characters:

    if character not in chars:
        charsadd(character)  # this line is different - no method lookup now
    
    0 0
添加回答
相关问答

1

回答

python中字典包含的内置方法有哪些呀?

2022-04-02 14:25:29 211浏览量 回答数 1

1

回答

Python字典内置方法 dict.fromkeys(seq[, val])什么意思?

2021-11-02 20:29:02 336浏览量 回答数 1

1

回答

Python字典内置方法 dict.items()什么意思?

2021-11-02 20:36:04 319浏览量 回答数 1

1

回答

Python字典内置方法 dict.has_key(key)什么意思?

2021-11-02 20:35:07 315浏览量 回答数 1

1

回答

Python字典内置方法 dict.keys()什么意思?

2021-11-02 20:36:54 277浏览量 回答数 1

1

回答

Python字典内置方法 dict.get(key, default=None)什么意思?

2021-11-02 20:30:24 332浏览量 回答数 1

1

回答

Python字典内置方法dict.setdefault(key, default=None什么意思?

2021-11-02 20:37:46 323浏览量 回答数 1

1

回答

Python字典内置方法 dict.update(dict2)什么意思?

2021-11-02 20:38:31 298浏览量 回答数 1

1

回答

Python字典内置方法pop(key[,default])什么意思?

2021-11-02 20:40:27 342浏览量 回答数 1

1

回答

Python字典内置方法dict.clear()什么意思?

2021-11-02 20:25:23 337浏览量 回答数 1
47
文章
723
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载