Python 将字典打印为表而不导入模块
我有以下两本字典:Python 将字典打印为表而不导入模块,python,dictionary,printing,Python,Dictionary,Printing,我有以下两本字典: stats_dict = { "PO1": { "congruent": { "mean": 0.6205138, "stdev": 0.07207165926839758, "true_percentage": 0.8333333333333334 }, "incongruent": { "mean": 0.6205138, "stdev": 0.07207165926839758,
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 dictionary):
我很难将数据定位在正确的标题下我目前的输出如下:
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))
。。。
打印(“{:您可以使用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))
。。。
print(“{:此代码将为您提供所需的内容
for d in stats_dict:
value = stats_dict[d]
s = d
for element in value:
val = value[element]
s+=' '*9+"{0:.2f}".format(val['mean'])+' '*5+"{0:.2f}".format(val['stdev'])+' '*5+"{0:.2f}".format(val['true_percentage'])
print(s)
对于第二个字典,您只需要内部循环。此代码将为您提供所需的内容
for d in stats_dict:
value = stats_dict[d]
s = d
for element in value:
val = value[element]
s+=' '*9+"{0:.2f}".format(val['mean'])+' '*5+"{0:.2f}".format(val['stdev'])+' '*5+"{0:.2f}".format(val['true_percentage'])
print(s)
对于第二个字典,您只需要内部循环。尝试python的textwrap来填充空格尝试python的textwrap来填充空格您也可以尝试texttable,这非常感谢!我希望能够将数据格式化为3位小数。我可以做类似于上面的事情吗?看看我在问题底部添加了什么onno你应该喜欢“{0:.3f}”。format(value.get(“Congrent”,“{}”)。get(“mean”))你也可以试试texttable,太好了,谢谢!我希望能够将数据格式化为3位小数。我可以做类似上面的事情吗?看看我在问题底部添加的内容不,你应该喜欢“{0:.3f}”。format(value.get(“Congrent”,“Congrent”,“{}”).get(“mean”))