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

Reply via email to