Sample code below:
list_of_dict = list([{'id':1,'amt':1},{'id':2,'amt':20},{'id':3,'amt':30}])
def fooFunc(a,b):
rows = [] ## list object
for e in range(b):
new = a.copy()
new['amt'] = a['amt'] / b
rows.append(new) ## using append()
return rows
output=[]
for i in list_of_dict:
idnmbr = i['id']
if idnmbr == 2:
output.append(fooFunc(i,2))
elif idnmbr == 3:
output.append(fooFunc(i,3))
else:
output.append(i)
print(output)
Output:
[{'id': 1, 'amt': 1}, [{'id': 2, 'amt': 10.0}, {'id': 2, 'amt': 10.0}], [{'id': 3, 'amt': 10.0}, {'id': 3, 'amt': 10.0}, {'id': 3, 'amt': 10.0}]]
Wan’t to get rid of [square brackets] i.e. [{‘id’: 2, ‘amt’: 10.0}, {‘id’: 2, ‘amt’: 10.0}] that is being appended from the function call that returns results/rows as a list.
Tried converting the function call return to a dictionary object, but results are not as expected.
def fooFuncDict(a,b):
rows = {} ## dictionary object
for e in range(b):
new = a.copy()
new['amt'] = a['amt'] / b
rows.update(new) ## using update()
return rows
output=[]
for i in list_of_dict:
idnmbr = i['id']
if idnmbr == 2:
output.append(fooFuncDict(i,2))
elif idnmbr == 3:
output.append(fooFuncDict(i,3))
else:
output.append(i)
print(output)
Output:
[{'id': 1, 'amt': 1}, {'id': 2, 'amt': 10.0}, {'id': 3, 'amt': 10.0}]
Advertisement
Answer
I believe you need list.extend
Ex:
output=[]
for i in list_of_dict:
idnmbr = i['id']
if idnmbr == 1:
output.append(i)
else:
output.extend(fooFunc(i,idnmbr))
print(output)
# [{'id': 1, 'amt': 1}, {'id': 2, 'amt': 10.0}, {'id': 2, 'amt': 10.0}, {'id': 3, 'amt': 10.0}, {'id': 3, 'amt': 10.0}, {'id': 3, 'amt': 10.0}]