Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the difference between dict() and {}?

So let's say I wanna make a dictionary. We'll call it d. But there are multiple ways to initialize a dictionary in Python! For example, I could do this:

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

Or I could do this:

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

Or this, curiously:

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

Or this:

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

And a whole other multitude of ways with the dict() function. So obviously one of the things dict() provides is flexibility in syntax and initialization. But that's not what I'm asking about.

Say I were to make d just an empty dictionary. What goes on behind the scenes of the Python interpreter when I do d = {} versus d = dict()? Is it simply two ways to do the same thing? Does using {} have the additional call of dict()? Does one have (even negligible) more overhead than the other? While the question is really completely unimportant, it's a curiosity I would love to have answered.

like image 418
verix Avatar asked Mar 19 '09 21:03

verix


People also ask

Is dict () Same as {}?

The setup is simple: the two different dictionaries - with dict() and {} - are set up with the same number of elements (x-axis). For the test, each possible combination for an update is run.

What is dict () function?

The dict() function creates a dictionary. A dictionary is a collection which is unordered, changeable and indexed.

What is difference between default dict and dict?

The main difference between defaultdict and dict is that when you try to access or modify a key that's not present in the dictionary, a default value is automatically given to that key . In order to provide this functionality, the Python defaultdict type does two things: It overrides .

What does dict items () do in Python?

Python Dictionary items() Method The items() method returns a view object. The view object contains the key-value pairs of the dictionary, as tuples in a list. The view object will reflect any changes done to the dictionary, see example below.


1 Answers

>>> def f(): ...     return {'a' : 1, 'b' : 2} ...  >>> def g(): ...     return dict(a=1, b=2) ...  >>> g() {'a': 1, 'b': 2} >>> f() {'a': 1, 'b': 2} >>> import dis >>> dis.dis(f)   2           0 BUILD_MAP                0               3 DUP_TOP                            4 LOAD_CONST               1 ('a')               7 LOAD_CONST               2 (1)              10 ROT_THREE                         11 STORE_SUBSCR                      12 DUP_TOP                           13 LOAD_CONST               3 ('b')              16 LOAD_CONST               4 (2)              19 ROT_THREE                         20 STORE_SUBSCR                      21 RETURN_VALUE         >>> dis.dis(g)   2           0 LOAD_GLOBAL              0 (dict)               3 LOAD_CONST               1 ('a')               6 LOAD_CONST               2 (1)               9 LOAD_CONST               3 ('b')              12 LOAD_CONST               4 (2)              15 CALL_FUNCTION          512              18 RETURN_VALUE         

dict() is apparently some C built-in. A really smart or dedicated person (not me) could look at the interpreter source and tell you more. I just wanted to show off dis.dis. :)

like image 106
Steven Huwig Avatar answered Oct 13 '22 05:10

Steven Huwig