python - 如何以所需的方式打印输出?
问题描述
我希望以所需的方式打印嵌套字典的输出,但没有得到任何想法来做同样的事情。任何人都可以帮助解决这个问题。
#!/usr/bin/python
#Using python 2.7
li= [ {1: {"count_1": 12, "count_3": 899, "count_2": 100}},
{2: {"count_1": 13, "count_3": 100, "count_2": 200}},
{3: {"count_1": 14, "count_3": 999, "count_2": 300}},
{4: {"count_1": 15, "count_3": 99, "count_2": 400}}]
fmt = "{:} {:} {:} {:} {:} "
print fmt.format("name", "stat1", "stat2", "stat3", "stat4")
for dict_data in li:
for parent_key,value in dict_data.iteritems():
for k,v in value.iteritems():
print k, "->", v
获取输出为:
name, stat1 stat2 stat3 stat4
count_3 -> 899
count_2 -> 100
count_1 -> 12
count_3 -> 100
count_2 -> 200
count_1 -> 13
count_3 -> 999
count_2 -> 300
count_1 -> 14
count_3 -> 99
count_2 -> 400
count_1 -> 15
预期输出:
name stat1 stat2 stat3 stat4
count_3 899 100 999 99
count_2 100 200 300 400
count_1 12 13 14 15
使用:Python 2.7,我想避免pandas
解决方案
这是一种方法。您可以提取“行名”并首先对它们进行排序,因为它们分别位于单独的行上,然后从以下位置提取每行的值li
:
fmt = "{:}\t{:}\t{:}\t{:}\t{:} "
print(fmt.format("name", "stat1", "stat2", "stat3", "stat4"))
rows = sorted(li[0][1].keys(), reverse=True) # ['count_3', 'count_2', 'count_1']
for rname in rows:
stats = [val[rname] for d in li for val in d.values()]
print(fmt.format(rname, *stats))
输出
name stat1 stat2 stat3 stat4
count_3 899 100 999 99
count_2 100 200 300 400
count_1 12 13 14 15
推荐阅读
- c# - 在 AAD 中按用户 ID 查找用户失败
- spring-boot - 在 Spring Boot 中我可以在哪些位置使用 @Cacheable 和 redis 缓存
- parsing - 在 IntelliJ 中使用 Kastree 将 Kotlin 源解析为 AST 时出错
- swift - 根据 UIImage Ratio 调整 UIImageView 大小不起作用
- list - 如何处理列表中的关键道具?
- azure-active-directory - 在多租户 azure 函数中使用 Graph(应用凭据)
- r - 在 R 中执行时间序列 xgboost 时,`mutate()` 输入`index_date` 出现问题
- php - 无法使用 substr 函数在刀片文件中显示原始 html 数据
- mysql - 将外键与父级关联的最佳方法
- c# - 连接到 MSSQL 总是需要 2 秒