簡體   English   中英

從列表列表中提取數據? [Python 3.8]

[英]Extract data from list of lists? [Python 3.8]

說我有這個listoflists

for sub_list in listoflists:
print(sub_list)

輸出:

[('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')]

如何對所有數據進行排序以最終制作一個包含列的表:id、用戶名、密碼、角色? 使用prettytables或任何最好和最pythonic 的方式。

您可以使用pandas來創建數據框:

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)

印刷:

  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

或者:只需使用普通的 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]))

印刷:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM