On Thu, Oct 6, 2011 at 1:39 PM, Andreas Perstinger < andreas.perstin...@gmx.net> wrote:
> On 2011-10-06 05:46, lina wrote: > >> On Thu, Oct 6, 2011 at 4:33 AM, Prasad, >> Ramit<ramit.prasad@jpmorgan.**com<ramit.pra...@jpmorgan.com> >> >wrote: >> >>> Dictionaries {} are containers for key/value based pairs like { key : >>> >>> value, another_key : value(can be same or repeated) } >>> >>> For example: >>> {'B': [0, 0, 0, 0, 0, 0], 'E': [2, 1, 4, 0, 1, 0]} >>> The keys here are 'B' and 'E'. The values here are [0, 0, 0, 0, 0, 0] >>> (for >>> >> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^**^^^ > >> key 'B') and [2, 1, 4, 0, 1, 0] (for key 'E') >>> >> >> def writeonefiledata(outname,**results): >> outfile = open(outname,"w") >> for key in results: >> return outfile.write(results[key]) >> >> $ python3 counter-vertically-v2.py >> Traceback (most recent call last): >> File "counter-vertically-v2.py", line 43, in<module> >> dofiles(".") >> File "counter-vertically-v2.py", line 12, in dofiles >> processfile(filename) >> File "counter-vertically-v2.py", line 29, in processfile >> writeonefiledata(base+**OUTFILEEXT,results) >> File "counter-vertically-v2.py", line 39, in writeonefiledata >> return outfile.write(results[key]) >> TypeError: must be str, not list >> > ^^^^^^^^^^^^^^^^^^^^^ > The error message tells you, that "results[key]" is a list but "write" just > excepts a string. (see Ramit's explanation above). > You have to convert the list values to a string. > I still don't know how to (standard) convert the list values to a string. def writeonefiledata(outname,results): outfile = open(outname,"w") for key, value in results.items(): print(value) outfile.write(str(results[key])) Is it a wrong way? Thanks all for the help. > BTW: You shouldn't return the write operation because that will exit your > function after the first iteration. > > > def writeonefiledata(outname,**results): >> outfile = open(outname,"w") >> for key, value in results.iteritems(): >> return outfile.write(key) >> >> $ python3 counter-vertically-v2.py >> Traceback (most recent call last): >> File "counter-vertically-v2.py", line 43, in<module> >> dofiles(".") >> File "counter-vertically-v2.py", line 12, in dofiles >> processfile(filename) >> File "counter-vertically-v2.py", line 29, in processfile >> writeonefiledata(base+**OUTFILEEXT,results) >> File "counter-vertically-v2.py", line 38, in writeonefiledata >> for key, value in results.iteritems(): >> AttributeError: 'dict' object has no attribute 'iteritems' >> > > In Python 3 there is no "dict.iteritems()" any more: > http://docs.python.org/py3k/**whatsnew/3.0.html#views-and-** > iterators-instead-of-lists<http://docs.python.org/py3k/whatsnew/3.0.html#views-and-iterators-instead-of-lists> > Use "dict.items()" instead > > Bye, Andreas > > > ______________________________**_________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > http://mail.python.org/**mailman/listinfo/tutor<http://mail.python.org/mailman/listinfo/tutor> > -- Best Regards, lina
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor