S
Sneaky Wombat
I'm really confused by what is happening here. If I use zip(), I
can't update individual dictionary elements like I usually do. It
updates all of the dictionary elements. It's hard to explain, so here
is some output from an interactive session:
In [52]: header=['a','b','c','d']
In [53]: columnMap={}
In [54]: for (k,v) in zip(header,[[]]*len(header)):
....: #print "%s,%s"%(k,v)
....: columnMap[k] = v
....:
In [55]: columnMap
Out[55]: {'a': [], 'b': [], 'c': [], 'd': []}
In [56]: columnMap['a'].append('something')
In [57]: columnMap
Out[57]:
{'a': ['something'],
'b': ['something'],
'c': ['something'],
'd': ['something']}
Why does ['something'] get attached to all columnMap elements instead
of just element 'a'?
In [58]: columnMap={'a': [], 'b': [], 'c': [], 'd': []}
In [59]: columnMap['a'].append('something')
In [60]: columnMap
Out[60]: {'a': ['something'], 'b': [], 'c': [], 'd': []}
creating the dictionary without using zip, it works as normal.
can't update individual dictionary elements like I usually do. It
updates all of the dictionary elements. It's hard to explain, so here
is some output from an interactive session:
In [52]: header=['a','b','c','d']
In [53]: columnMap={}
In [54]: for (k,v) in zip(header,[[]]*len(header)):
....: #print "%s,%s"%(k,v)
....: columnMap[k] = v
....:
In [55]: columnMap
Out[55]: {'a': [], 'b': [], 'c': [], 'd': []}
In [56]: columnMap['a'].append('something')
In [57]: columnMap
Out[57]:
{'a': ['something'],
'b': ['something'],
'c': ['something'],
'd': ['something']}
Why does ['something'] get attached to all columnMap elements instead
of just element 'a'?
In [58]: columnMap={'a': [], 'b': [], 'c': [], 'd': []}
In [59]: columnMap['a'].append('something')
In [60]: columnMap
Out[60]: {'a': ['something'], 'b': [], 'c': [], 'd': []}
creating the dictionary without using zip, it works as normal.