Skip to content
Advertisement

Return decimal fields from list

I have a generator which yields to datatype on is decimal and other is string i need the method to just return the decimal

def my_generator():
    yield amount, name


def get_amount(obj):
    p = list()
    gen = obj.my_generator()
    for i in gen:
        p.append(i)
    return p

get_amount()

now it is returning [(Decimal(‘1950.00′), ’06/16/2020’), (Decimal(‘4500.00′), ’06/16/2020’)]

I want the list to be returned as formatted how can i do that ‘${:0,.2f}’.format(Decimal(‘1950.00’) which is in my list) so the end result would be like $1,950.00

if the the return has two yields it should return like. $1,950.00, $4,500.00

Advertisement

Answer

Simply get only the first value from your tuple with i[0].

Example:

from decimal import Decimal
from random import randint

def my_generator(count):
    for _ in range(count):
        yield Decimal(randint(1000, 2000)), "some str"

def get_amount(count):
    p = []
    for i in my_generator(count):
        p.append(f'${i[0]:0,.2f}')
    return p

print(get_amount(2))

Output:

['$1,638.00', '$1,685.00']

Here’s a more verbose version of the for loop, also using str.format instead of f-string

for i in my_generator(count):
    money, unused_str_value = i # assign tuple values to individual variable names
    formatted_money = '${:0,.2f}'.format(money)
    p.append(formatted_money)
User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement