加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何将列表的dict格式化为表格

发布时间:2020-12-20 12:29:48 所属栏目:Python 来源:网络整理
导读:我有一个包含字符串列表的dict,并希望将所有内容打印为终端中的表格,格式如下: +----------------------------------------------+| key1 | key2 | key3 | key4 |+----------------------------------------------+| val_1 | val_1 | val_1 | val_1 ||-----
我有一个包含字符串列表的dict,并希望将所有内容打印为终端中的表格,格式如下:

+----------------------------------------------+
|   key1   |   key2   |   key3    |    key4    |
+----------------------------------------------+
|   val_1  |   val_1  |   val_1   |   val_1    |
|----------|----------|-----------|------------|
|   val_2  |   val_2  |   val_2   |   val_2    |
+----------------------------------------------+

等等

有一个惊人的模块或一个简单的方法来实现这一目标吗?我有一个列宽,我通过找到每个列表中最长的val得到.

解决方法

你可以使用 PrettyTable.

>我对键进行了排序,并对值进行了排序.这产生了可预测的输出.
>我选择了PrettyTable,因为它可以通过apt-get install python-prettytable在Ubuntu中安装.

.

#! /usr/bin/env python

from prettytable import PrettyTable

d1 = {
  "key1":["val1_1","val1_2"],"key2":["val2_1","val2_2"],"key3":["val3_1","val3_2"],"key4":["val4_1","val4_2"],}

table = PrettyTable()

for key,val in sorted(d1.iteritems()):
  table.add_column(key,sorted(val))

print table

结果是:

$./t
+--------+--------+--------+--------+
|  key1  |  key2  |  key3  |  key4  |
+--------+--------+--------+--------+
| val1_1 | val2_1 | val3_1 | val4_1 |
| val1_2 | val2_2 | val3_2 | val4_2 |
+--------+--------+--------+--------+

PrettyTable还提供HTML格式.用以下内容替换打印表:

print table.get_html_string(attributes={"size":"100%","class":"MyTable"})

你得到:

<table border="1" class="MyTable" size="100%">
    <tr>
        <th>key1</th>
        <th>key2</th>
        <th>key3</th>
        <th>key4</th>
    </tr>
    <tr>
        <td>val1_1</td>
        <td>val2_1</td>
        <td>val3_1</td>
        <td>val4_1</td>
    </tr>
    <tr>
        <td>val1_2</td>
        <td>val2_2</td>
        <td>val3_2</td>
        <td>val4_2</td>
    </tr>
</table>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读