python - 如何打印字符串列表的字典

标签 python dictionary printing

我有一本由整数列表组成的字典的字典。我想循环遍历每个字典并生成一个表,其中 y 轴设置为列出名称,x 轴设置为任意名称。

a = {'john': {'alex': [5, 6], 'bono': [0, 4]}, 'jane': {'alex': [0, 1], 'bono': [0, 1]}}

for k, v in a.items():
    print('\n' + k)
    for k, v in v.items():
        print(k, v)

当前输出是:

john
alex [5, 6]
bono [0, 4]

jane
alex [0, 1]
bono [0, 1]

我想要的输出是:

john   col1 col2
alex   5    6
bono   0    4

jane | col1 col2
-----------------
alex | 0    1
bono | 0    1

列数(col1 和 col2)是固定的。 (简表中的效果是可选的,没有它也可以!)。

编辑:我正在寻找非 pandas(导入模块)解决方案。

最佳答案

编辑:

我在下面留下了 pandas 代码,以便您引用。 否则,这里有一个带有字符串格式的脚本来打印您所要求的表格。您可以尝试使用数字来让脚本适应更长的名称,如下例所示:

# your original data:
outer_name_dictionary = {'john': {'alexis': [5, 6], 'bonofide': [0, 4]}, 'jane doe': {'alex': [0, 1], 'bono': [0, 1]}}

# iterate over each outer dictionary:
for key, value in outer_name_dictionary.items():

    # get inner dictionary:
    inner_name_dictionary = value

    # print the column headers, you can change the '10' to a larger number ...
    # but do the same with the print function below:
    print('%10s | col0  col1' %key)
    print(' '*6 + '-'*18)

    # iterate over ech inner dictionary:
    for inner_key, inner_value in inner_name_dictionary.items():

        # print the column values:
        print('%10s | %4d  %4d' %(inner_key, inner_value[0], inner_value[1]))

    print()

输出:

      john | col0  col1
      ------------------
    alexis |    5     6
  bonofide |    0     4

  jane doe | col0  col1
      ------------------
      alex |    0     1
      bono |    0     1

Pandas 解决方案:

import pandas as pd

# your original data:
name_dictionary = {'john': {'alex': [5, 6], 'bono': [0, 4]}, 'jane': {'alex': [0, 1], 'bono': [0, 1]}}

# iterate over each inner dictionary:
for name in name_dictionary:

    # convert each inner dictionary to a dataframe:
    name_dataframe = pd.DataFrame(name_dictionary[name])

    # transpose dataframe:
    name_dataframe = name_dataframe.T

    # assign original name to name of columns in dataframe:
    name_dataframe.columns.name = name

    # rename columns:
    name_dataframe = name_dataframe.rename(columns={
            0 : 'col0',
            1 : 'col1',
    })

    # print results:
    print(name_dataframe)
    print()

关于python - 如何打印字符串列表的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60012041/

相关文章:

python - 为什么 Python 2.7 中的 print 括号是自愿的?

Python 颜色/格式在 pyinstaller 中不起作用

python - 读取 lob 时出现 cx_Oracle MemoryError

javascript - 当一个简单的 For Loop 工作正常时,我的 forEach 方法有什么问题

python - 过滤列表中的最新项目

printing - 有没有虚拟 COM 端口收据打印机之类的东西?

python - 基于 Django 类的表单仅更新最终发布值

python - 处理 JSON 响应时是否需要嵌套循环?

python - 如何将带有列表键的 python 字典保存到文件中?

c# - 如何使用 EPPlus 创建 A4 纸的 Excel 文件