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)