python - 将字典打印为表格而不导入模块
问题描述
我有以下两个字典:
stats_dict = {
"PO1": {
"congruent": {
"mean": 0.6205138,
"stdev": 0.07207165926839758,
"true_percentage": 0.8333333333333334
},
"incongruent": {
"mean": 0.6205138,
"stdev": 0.07207165926839758,
"true_percentage": 0.8333333333333334
}
},
"PO2": {
"congruent": {
"mean": 0.6205138,
"stdev": 0.07207165926839758,
"true_percentage": 0.8333333333333334
},
"incongruent": {
"mean": 0.6205138,
"stdev": 0.07207165926839758,
"true_percentage": 0.8333333333333334
}
},
"PO3": {
"congruent": {
"mean": 0.6205138,
"stdev": 0.07207165926839758,
"true_percentage": 0.8333333333333334
},
"incongruent": {
"mean": 0.6205138,
"stdev": 0.07207165926839758,
"true_percentage": 0.8333333333333334
}
}
}
group_stats_dict = {
"congruent": {
"mean": 0.68699328,
"stddev": 0.98465454,
"pecentage_correct": 0.98
},
"incongruent": {
"mean": 0.78699328,
"stddev": 0.99465454,
"pecentage_correct": 0.98
}
}
我要做的是在控制台中以表格格式打印结果。
到目前为止,我有以下代码:
stats_dict = {}
group_stats_dict = {}
print (" CONGRUENT INCONGRUENT")
print ("PARTICIPANT MEAN STDDEV %CORRECT MEAN STDDEV % CORRECT")
for d in stats_dict.keys():
print(d)
for m in stats_dict[k]:
print(m)
我希望输出在控制台中看起来像这样(其中 group 是打印的 group_stats 字典。):
CONGRUENT INCONGRUENT
PARTICIPANT MEAN STDDEV % CORRECT MEAN STDDEV % CORRECT
P01 0.620 0.072 0.83 0.620 0.072 0.83
P02 0.620 0.072 0.83 0.620 0.072 0.83
GROUP 0.686 0.984 0.98 0.786 0.994 0.98
我很难将数据定位在正确的标题下,目前我的输出如下所示:
CONGRUENT INCONGRUENT
PARTICIPANT MEAN STDDEV %CORRECT MEAN STDDEV % CORRECT
P01
congruent
incongruent
P02
congruent
incongruent
P03
congruent
incongruent
P04
congruent
incongruent
P05
非常感谢所有帮助。如果您有任何问题或需要添加到我的问题中,请告诉我。
我可以将数据格式化为小数点后 3 位吗?
for participant,value in stats_dict.items():
print(
participant,
value.get("congruent","{:.3f}").get("mean"),
value.get("congruent","{:.3f}").get("stdev"),
value.get("congruent",{}).get("percentage_correct"),
value.get("incongruent",{}).get("mean"),
value.get("incongruent",{}).get("stdev"),
value.get("incongruent",{}).get("percentage_correct")
)
解决方案
您可以使用str.format
来格式化您的行:
...
print ('{:<12}{:<9}{:<9}{:<13}{:<8}{:<10}{}'.format("PARTICIPANT", "MEAN", "STDDEV", "%CORRECT", "MEAN", "STDDEV", "% CORRECT")
for d in stats_dict.keys():
line = [d]
for i in 'congruent', 'incongruent':
for j in ('mean', 'stdev', 'true_percentage'):
line.append(stats_dict[d][i][j])
print('{:<12}{:<9.3}{:<9.3}{:<13.2}{:<8.3}{:<10.3}{<13.2}'.format(*line))
推荐阅读
- javascript - 订阅映射的http响应的角度“值未定义”(未发出请求?)
- mysql - 在 Mysql 表中批量数据导入而不删除索引
- spring-data-redis - spring-data-redis 为 RedisCacheManager 创建集群
- powerbi - 获取总活动会话、开始和结束时间
- excel - excel中的网页抓取
- python - 如何获取输入并在 Python 3 中运行代码
- android - 像whats app一样将edittext高度增加到5行
- sql - 基于日期的动态列名
- ios - iOS CocoaLumberjack:如果启用了 backgroundModes 并且应用程序在模拟器中运行,则每次启动应用程序时都会创建新的日志文件
- angular - Angular 模块在运行时动态导入捆绑在 s3 上的另一个 Angular 模块