2017-03-05 9 views
-1

私は現在、リストを取得し、各アイテムがリストに出現する回数をカウントするテーブルを作成する関数を持っています。 1文字の項目でそれを実行すると、頻度の列が良い偶数行に返されます。しかし、項目が複数の文字である場合、周波数はすべて整列していません。これをPythonでどのように修正できますか?ここでPythonテーブルの整列/埋め込み?

は(...私はテーブルを作成する方法を見つけ出すカントので)結果がどのように見えるかの絵であるこの2つの例で:

enter image description here

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

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

どのように整列を修正できますか?

EDIT:その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'、 'C​​IS'、「CIS 」、 『J』、 『サイ』、 『サイ』

+0

あなたの関数がどのようにそれがどのように見えるんです – DyZ

+0

'freqTable'何ですかあなたのコードを表示してください。テキスト*ではなく、画像ではありません。これは、テキストをコピーして自分で試すことができるようにするためです。 – cdarke

+0

do ...それを忘れてしまった。 – user2951723

答えて

0

あなたは例えば、印刷用にフォーマットされた出力を使用する必要があります?

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