Looking at your data, it looks like you have a list of list of dictionaries. So it just need to be flattened and loaded as a dataframe. Once you have the data in the dataframe, you need to convert the float into 3 decimal place string format, join the list of values and print.
Here's how I will do it:
- Step 1: Flatten the data to a normal dictionary with key:value pair
- Step 2: Load the key:value pair dictionary into a dataframe
Steps 1 & 2 are accomplished using this list comprehension + DataFrame creation step
df = pd.DataFrame([k for klist in data for k in klist])
- Step 3: Convert the
C
column into a string format with 3 decimal places
- Step 4: Concatenate the list as a string using
.join()
while adding
'
'
as separator
Steps 3 & 4 are accomplished using this single line map and join function.
c_list = '
'.join(df.C.map('{:,.3f}'.format).tolist())
- Step 5: print the data in raw format to get the
as well.
Step 5 is just to print and is another line. I am using repr to give you the
data on the same line.
print (repr(c_list))
You can do it as follows:
data = [[ {'C': 8, 'G': 1, 'T': 1},
{'C': 4.84, 'G': 1, 'T': 2},
{'C': 1.416, 'G': 1, 'T': 3}],
[{'C': 2.56, 'G': 1, 'T': 1},
{'C': 3.104, 'G': 1, 'T': 2},
{'C': 3.09, 'G': 1, 'T': 3}],
[{'C': 1.184, 'G': 1, 'T': 1},
{'C': 7.5, 'G': 1, 'T': 2},
{'C': 15, 'G': 1, 'T': 3}]]
import pandas as pd
df = pd.DataFrame([k for klist in data for k in klist])
c_list = '
'.join(df.C.map('{:,.3f}'.format).tolist())
print (repr(c_list))
The output of this will be:
'8.000
4.840
1.416
2.560
3.104
3.090
1.184
7.500
15.000'
To print 3 items one each line, you can do the following:
for i in range(0,len(c_list),3):
print(repr('
'.join(c_list[i:i+3])))
or you can try to print it as:
for i in range(0,len(c_list),3):
print(r'
'.join(c_list[i:i+3]))
The output will be:
'8.000
4.840
1.416'
'2.560
3.104
3.090'
'1.184
7.500
15.000'
I assume you are asking for this.
I added an extra line to the input dictionary {'C': 12.5, 'G': 2, 'T': 8}
The output is as follows:
'8.000
4.840
1.416'
'2.560
3.104
3.090'
'1.184
7.500
15.000'
'12.500'