Say I have this listoflists
:
for sub_list in listoflists:
print(sub_list)
Output:
[('id', '1'), ('id', '2'), ('id', '3'), ('id', '4'), ('id', '5'), ('id', '6'), ('id', '7')]
[('username', 'admin'), ('username', 'boss'), ('username', 'bubu'), ('username', 'david'), ('username', 'leet'), ('username', 'niki'), ('username', 'roman')]
[('password', '!QAZ@WSX#EDC'), ('password', '!QAZ@WSX#EDC123123'), ('password', '123123'), ('password', '123456Aa!'), ('password', '1337'), ('password', 'A123456a'), ('password', 'QAZWSXEDC!')]
[('role', 'admin'), ('role', 'admin'), ('role', 'nobody'), ('role', 'user'), ('role', 'user'), ('role', 'user'), ('role', 'user')]
How can I sort all the data out to eventually make a table with columns: id, username, password, role? Using prettytables
or whatever is the best and most pythonic way.
You can use use pandas
to create dataframe:
import pandas as pd
data = [
[('id', '1'), ('id', '2'), ('id', '3'), ('id', '4'), ('id', '5'), ('id', '6'), ('id', '7')],
[('username', 'admin'), ('username', 'boss'), ('username', 'bubu'), ('username', 'david'), ('username', 'leet'), ('username', 'niki'), ('username', 'roman')],
[('password', '!QAZ@WSX#EDC'), ('password', '!QAZ@WSX#EDC123123'), ('password', '123123'), ('password', '123456Aa!'), ('password', '1337'), ('password', 'A123456a'), ('password', 'QAZWSXEDC!')],
[('role', 'admin'), ('role', 'admin'), ('role', 'nobody'), ('role', 'user'), ('role', 'user'), ('role', 'user'), ('role', 'user')],
]
df = pd.DataFrame([dict(subl) for subl in zip(*data)])
print(df)
Prints:
id username password role
0 1 admin !QAZ@WSX#EDC admin
1 2 boss !QAZ@WSX#EDC123123 admin
2 3 bubu 123123 nobody
3 4 david 123456Aa! user
4 5 leet 1337 user
5 6 niki A123456a user
6 7 roman QAZWSXEDC! user
Or: Just use plain Python:
print('{:<10} {:<20} {:<20} {}'.format('id', 'username', 'password', 'role'))
for d in zip(*data):
print('{:<10} {:<20} {:<20} {}'.format(*[v for _, v in d]))
Prints:
id username password role
1 admin !QAZ@WSX#EDC admin
2 boss !QAZ@WSX#EDC123123 admin
3 bubu 123123 nobody
4 david 123456Aa! user
5 leet 1337 user
6 niki A123456a user
7 roman QAZWSXEDC! user
import pandas as pd
all_lists = [
[('id', '1'), ('id', '2'), ('id', '3'), ('id', '4'), ('id', '5'), ('id', '6'), ('id', '7')],
[('username', 'admin'), ('username', 'boss'), ('username', 'bubu'), ('username', 'david'), ('username', 'leet'), ('username', 'niki'), ('username', 'roman')],
[('password', '!QAZ@WSX#EDC'), ('password', '!QAZ@WSX#EDC123123'), ('password', '123123'), ('password', '123456Aa!'), ('password', '1337'), ('password', 'A123456a'), ('password', 'QAZWSXEDC!')],
[('role', 'admin'), ('role', 'admin'), ('role', 'nobody'), ('role', 'user'), ('role', 'user'), ('role', 'user'), ('role', 'user')]
]
cols = [l[0][0] for l in all_lists]
data = [[tup[1] for tup in l] for l in all_lists]
df = pd.DataFrame(columns=cols, data=zip(*data))
print(df)
id username password role
0 1 admin !QAZ@WSX#EDC admin
1 2 boss !QAZ@WSX#EDC123123 admin
2 3 bubu 123123 nobody
3 4 david 123456Aa! user
4 5 leet 1337 user
5 6 niki A123456a user
6 7 roman QAZWSXEDC! user
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.