[python] dict()和{}有什么区别?


Answers

就性能而言:

>>> from timeit import timeit
>>> timeit("a = {'a': 1, 'b': 2}")
0.424...
>>> timeit("a = dict(a = 1, b = 2)")
0.889...
Question

所以我想说我想写一本字典。 我们称之为d 。 但是有多种方法可以在Python中初始化字典! 例如,我可以这样做:

d = {'hash': 'bang', 'slash': 'dot'}

或者我可以这样做:

d = dict(hash='bang', slash='dot')

或者,奇怪的是:

d = dict({'hash': 'bang', 'slash': 'dot'})

或这个:

d = dict([['hash', 'bang'], ['slash', 'dot']])

以及dict()函数的其他多种方式。 显然, dict()提供的一个功能是语法和初始化的灵活性。 但这不是我要问的问题。

说我只是把一本空字典。 当我做d = {}d = dict()时,Python解释器的幕后发生了什么? 它只是两种方式来做同样的事情? 使用{}是否有额外dict()调用? 是否有一个(甚至可以忽略不计)比另一个更多的开销? 虽然这个问题真的完全不重要,但我很乐意回答这个好奇心。




为了创建一个空集,我们应该在它之前使用关键字set,即set()这会创建一个空集,其中只有花括号可以创建一个空字典

让我们举个例子

print isinstance({},dict) 
True 
print isinstance({},set) 
False 
print isinstance(set(),set) 
True



基本上,{}是语法,在语言和字节码级别上处理。 dict()只是另一种具有更灵活的初始化语法的内置函数。 请注意,dict()仅添加在2.x系列的中间。




当你想从迭代创建一个字典时使用dict(),如:

dict( generator which yields (key,value) pairs )
dict( list of (key,value) pairs )





Related