Rounding off Values of dicts (in a list) to 2 decimal points

Joel Goldstick joel.goldstick at gmail.com
Wed Oct 2 13:19:54 EDT 2013


On Wed, Oct 2, 2013 at 1:01 PM,  <tripsvt at gmail.com> wrote:
>  am trying to round off values in a dict to 2 decimal points but have been unsuccessful so far. The input I have is like this:
>
>
>     y = [{'a': 80.0, 'b': 0.0786235, 'c': 10.0, 'd': 10.6742903}, {'a': 80.73246, 'b': 0.0, 'c': 10.780323, 'd': 10.0}, {'a': 80.7239, 'b': 0.7823640, 'c': 10.0, 'd': 10.0}, {'a': 80.7802313217234, 'b': 0.0, 'c': 10.0, 'd': 10.9762304}]
>
>
>
> I want to round off all the values to two decimal points using the ceil function. Here's what I have:

This is a snippet of what you have I am guessing.  There is no print
statement so you won't be able to see the results.  Its best if you
include your complete code (if its short) or an example that actually
shows the problem..
>
>
>     def roundingVals_toTwoDeci():
>         global y
>         for d in y:
>             for k, v in d.items():
>                 v = ceil(v*100)/100.0
>         return
>     roundingVals_toTwoDeci()
>
>
That being said, you should pass y as a parameter to your function.
Using globals is always a bad idea.  That's another discussion
entirely, but you should google why globals are a bad idea to learn
more.
Your code does a calculation to create a value you call v.  You should
put a print statement below that to see what v has become.  Your inner
loop rewrites v for each loop.  It actually re-writes it twice i think
-- once when it iterates, and once when it calculates.  So you need to
fix that.  Also I think you need to interate using d.interitems()

That's a start.  Come back with the code you actually wrote and the
results it showed you.
Af


>
> But it is not working - I am still getting the old values.
> --
> https://mail.python.org/mailman/listinfo/python-list



-- 
Joel Goldstick
http://joelgoldstick.com



More information about the Python-list mailing list