Defaultdict と Counter についていくつか質問があります。1 行に 1 文のテキスト ファイルがある状況があります。文を (最初のスペースで) 2 つに分割し、最初の部分文字列をキーとして、2 番目の部分文字列を値として辞書に格納します。これを行う理由は、同じキーを共有する文の総数を取得できるようにするためです。
Text file format:
d1 This is an example
id3 Hello World
id1 This is also an example
id4 Hello Hello World
.
.
これは私が試したものですが、うまくいきません。私はカウンターを見てきましたが、私の状況では少し注意が必要です。
try:
openFileObject = open('test.txt', "r")
try:
with openFileObject as infile:
for line in infile:
#Break up line into two strings at first space
tempLine = line.split(' ' , 1)
classDict = defaultdict(tempLine)
for tempLine[0], tempLine[1] in tempLine:
classDict[tempLine[0]].append(tempLine[1])
#Get the total number of keys
len(classDict)
#Get value for key id1 (should return 2)
finally:
print 'Done.'
openFileObject.close()
except IOError:
pass
Counter または defaultdict を使用する前に、文を分割して巨大なリストにタプルとして保存せずにこれを行う方法はありますか? ありがとう!
編集:答えてくれたすべての人に感謝します。私は最終的に私がこれで間違っていた場所を見つけました。皆さんからの提案をすべて取り入れてプログラムを編集しました。
openFileObject = open(filename, "r")
tempList = []
with openFileObject as infile:
for line in infile:
tempLine = line.split(' ' , 1)
tempList.append(tempLine)
classDict = defaultdict(list) #My error is here where I used tempLine instead if list
for key, value in tempList:
classDict[key].append(value)
print len(classDict)
print len(classDict['key'])