2016-10-20 10 views
0

私はちょうどPythonの学習を始めています。私のプロジェクトでは、ファイルを取得して、チーム名を1列に列挙し、アルファベット順になり、setメソッドを使用する必要があります。私が習ったクラスは完全な災害であり、私たちはこの情報をカバーしませんでした。私は無知のために事前にお詫びします。ありがとうございました。Python 3.6のテキストファイルからテーブルを作成しようとしています

私はこれがsetメソッドであるとは思わない。

inputFile = open('WorldSeriesWinners.txt', 'r') 
lineList = inputFile.readlines() 
for line in sorted(lineList): 
    sorted (inputFile) 
    print(line.rstrip()) 
+0

このコードはどう思っていますか?'sorted(inputFile)'は何もソートしません(入力ファイルを使い尽くしてしまったため)、戻り値をどこにでも使用しないので、何も役に立ちません。 f:sys.stdout.writelines(sorted(f)) 'が(最初のフィールドでソートしているので)好きなようにソートしますが、ファイル形式の懸念はそれが機能するかどうかに影響します。 – ShadowRanger

+0

要件やファイルの形式に関する詳細情報を投稿できますか? 一見すると、各行にチーム名が含まれていると仮定し、各チームの出現回数を数えてから、チーム名と勝利回数を出力する必要があります、勝利の数でソートされます。私は仮定したくないので、可能ならば明確にしてください。 – gbromios

+0

また、本当に3を意味しますか?_6_? 3.6はまだベータ版です... – ShadowRanger

答えて

0

これはおそらく、この特定の問題の最速または最善の解決策ではありませんが、私は通常このようなことを行います。

def ReadCsv(fileToRead,colDelim = ",", rowDelim = "\n"): 
    fileHandle = open(fileToRead,"r") 
    fileContent = fileHandle.read() 
    fileLines = fileContent.split(rowDelim) 
    fileAsListOfLists = [k.split(colDelim) for k in fileLines] 
    return fileAsListOfLists 
0

ので、あなたは、このようにファイルを持っている:

Yankees 
Redsox 
Yankees 
Cardinals 
Dodgers 
Redsox 
Yankees 

、あなたはこの必要があります:あなたはsetを使用したいどのように私はまだ理解していない、最初に

Yankees 3 
Redsox 2 
Dodgers 1 
Cardinals 1 

をここに。あなたは物を数えたいと思っていますが、setのアイテムはユニークなものなので、アイテムが何回出現するかを数えても意味がありません。あなたはおそらくdictを使用するつもりです。

winners = {} 
for team_name in open('WorldSeriesWinners.txt'): 
    team_name = team_name.strip() # get rid of the newlines 
    winners[team_name] = winners.get(team_name, 0) + 1 

team_nameが鍵であり、そしてそれはされていない場合を除きwinners.get(team_name, 0)は、そのチームのための値を返します:dictをソートすることができないため、ファイルを読んでいる間、それをソートするために役に立たないということに注意してくださいまだ追加されている場合は、0を返します。すでに存在していた値に1を追加し、新しい値をwinnersに戻します。すべての行についてこれを実行した後、{"Yankees":3, "Dodgers":1, ... }のようなdictがあります。また、あなたのためにカウントするモジュールを使用することもできます。

https://docs.python.org/3.3/library/stdtypes.html#dict.get https://docs.python.org/3.3/library/collections.html#collections.Counter

これはあなたの問題の最初の部分を解決できる方法です。 2番目の部分は、ソート可能なリストに戻す必要があります。あなたは見にそれを伝えることができる方法は何か、それがどこに行くかを決定するために各アイテムでを見て、それを伝えるkey引数を取ることができwinners.items()はあなたに[("Yankees", 3), ("Dodgers", 1) ... ]

https://docs.python.org/3.3/library/stdtypes.html#dict.items

sortedのようなリストが表示されます勝利の数。

https://docs.python.org/3/library/functions.html#sorted

、列にそれをプリントアウトformatを見てみましょう、あなたは、各列は、私はあなたが思うスペース

https://docs.python.org/3/library/functions.html#format

の同じ量を持っていることを確認できるようになるためにリンクされたドキュメントの例が、問題の残りの部分の出発点になることがわかります。

関連する問題