Peng Yu wrote:
I'm wondering if there is something similar to list comprehension for
dict (please see the example code below).
d = dict(one=1, two=2)
print d
def fun(d):#Is there a way similar to list comprehension to change the
argument d so that d is changed?
d=dict(three=3)
fun(d)
print d
def fun1(d):
d['one']=-1
fun1(d)
print d
L = [1, 2]
print L
def fun2(L):#this doesn't have any effect on the argument L
L=[]
fun2(L)
print L#[1, 2]
def fun3(L):# argument L is changed
L[:]=[1, 2, 3]
fun3(L)
print L#[1, 2, 3]
You confused me by calling it a list comprehension. All you're using in
fun3() is a slice. Using a slice, you can give a new set of values to
an existing list.
For a dictionary, it's just a bit trickier. You need two steps in the
most general case.
def fun4(d):
d.clear() #clear out existing entries
d.update(new_dict) #copy in new key:val pairs from a
different dictionary
This function will modify the caller's dictionary, completely replacing
the contents.
DaveA
--
http://mail.python.org/mailman/listinfo/python-list