2017-03-05 375 views
-1

我有一个函数,当前需要一个列表并创建一个表,统计每个项目在列表中出现的次数。当我使用单个字符项目运行它时,频率列会以一个很好的偶数行返回。但是当物品不止一个字符时,那么这些频率都是不对齐的。我怎样才能解决这个问题在Python中?Python表格对齐/填充?

这里是一个什么样的结果看起来像一个图片(因为我无法弄清楚如何使一个表......)这两个例子:

enter image description here

freqTable([1, 2, 3, 3, 1, 4, 5]) 

freqTable(['CIS', 'CIS', 'CIS', 'J', 'Psy', 'Psy']) 

如何修复对齐?

编辑:它由3个功能

def drawTable(freqD): 

    iteml = list(freqD.keys()) 
    iteml.sort() 

    title = 'ITEM' + (' '*2) + 'FREQUENCY' 
    print(title) 

    for item in iteml: 
     print(item, ' '*3, freqD[item]) 

    return None 

def genFreqTable(alist): 

    freqD = {} 

    for item in alist: 
     if item in freqD: 
      freqD[item] += 1 
     else: 
      freqD[item] = 1 

    return freqD 


def freqTable(alist): 

    freqD = genFreqTable(alist) 
    drawTable(freqD) 

    return None 

赫雷什测试用例 freqTable([1,2,3,4]) freqTable([ 'CIS', 'CIS',“CIS ”,‘J’,‘精神科’,‘精神科’

+0

哪里是你的功能如何看待像 – DyZ

+0

什么是'freqTable' ?请显示您的代码。请参阅注意*文字*,而不是图像。这是我们可以复制文本并自己尝试。 – cdarke

+0

做...忘了补充一点。现在编辑 – user2951723

回答

0

您必须使用格式化输出打印,如:??

print("%-4s\t%3d" % (item, freqD[item]))