Válas Péter wrote:
Hi,
I think I am new to here, as far as I remember. :-)

http://docs.python.org/dev/library/stdtypes.html#dict says:
we can create a dictionary with

   - dict({'one': 1, 'two': 2})

What is the adventage of this form to simply writing d = {'one': 1, 'two': 2}?
Is there any difference?

dict() is a function (technically, a type) that creates new dictionaries from whatever argument you pass to it. { ... } is syntax for creating literal dictionaries. Think of this as similar to the difference between a mathematical expression:

x = 2*9-1

and a number literal:

x = 17


HOWEVER, in the above example with dict(), the form shown is redundant. dict({'one': 1, 'two': 2}) does these four steps:

(a) Python creates a dictionary using the "dict literal" syntax
    {'one': 1, 'two': 2}
(b) That dictionary is then passed to the dict() function
(c) The dict() function makes a copy of that dictionary and returns it
(d) Python's garbage collector deletes the original dictionary.

Never put a lone dict literal {...} inside a call to dict(), that's just a waste of time. Just use the literal on its own.

dict() *can* be very useful, just not in the example shown. You can use it to make copies of other dicts:


first_dict = {'one': 1, 'two': 2}
second_dict = dict(first_dict)


That's not very interesting, as you can easily make a copy with first_dict.copy() instead. But it gets more interesting if you want to add new items to the dictionary:


third_dict = dict(first_dict, three=3, four=4)


You can even leave out the original dict:


fourth_dict = dict(a=1, b=2, c=3)


or instead use a list of (key, value) pairs:


items = [('a', 1), ('b', 2), ('c', 3)]
fifth_dict = dict(items, d=4)



--
Steven

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to