我的函数将字典作为输入,然后在控制台中显示一个文本条形图。也就是说,它应该“打印”到屏幕上的条形图。图的标签是字典中的键,条形图的长度由键的值决定。你知道吗
例如,使用本词典:
{4:2, 3:5, 10:1, 8:1, 5:1}
情节如下:
keys|values
----+-------------
03|#####
04|##
05|#
08|#
10|#
进行绘图时,标签(键)应按排序顺序显示。每个标签(键)都应以前导零显示,以便每个标签中的位数相同。目前,我的所有功能都是打印包含以下语句的文件的字典:
and then the last assignment ended and everyone was sad
def wordLengthStats(filename):
file = open(filename, 'r')
wordcount={}
for line in file.read().split():
if line not in wordcount:
wordcount[line] = 1
else:
wordcount[line] += 1
for k,v in wordcount.items():
print (k, v)
return None
def main():
d = wordLengthStats("sample.txt")
print("d should be { 3:5, 4:2, 5:1, 8:1, 10:1} ")
print("d is", d)
if __name__ == '__main__':
main()
这句话只是一个例子,我正在努力使它,使任何输入应该工作。任何帮助解决这个问题将不胜感激。谢谢!你知道吗
试试这个:
Counter
函数将创建一个字典,其中包含filename
中所有行的频率。你知道吗sorted(counts.items(),key=lambda x: x[-1],reverse=True)
表示按counts.items()
中的最后一个位置(x[-1]
)按降序(reverse=True
)对项目排序,这就是频率。你知道吗最后,
.zfill
string方法为print
语句用前导零填充k
。你知道吗示例:
“假文件”假.txt':
在这个例子中
counts
看起来像:和
sorted(counts.items(),key=lambda x: x[-1],reverse=True)
看起来像(注意最常见的项目是第一个):如果您不想按频率排序,而是按键排序,那么请执行
sorted(counts.items())
您可以使用列表理解为字典项中的键、值创建元组(键、值*“#”),并对列表进行排序:
通过迭代列表中的这些元组并使用以下打印格式,可以获得所需的输出:
要将“0”添加到k<;10:
相关问题 更多 >
编程相关推荐