您将您的行拆分为单词列表,但只给它一个键和值。
这将有效:with open('LIWC_words.txt', 'r') as document:
answer = {}
for line in document:
line = line.split()
if not line: # empty line?
continue
answer[line[0]] = line[1:]
请注意,您不需要提供.split()参数; 没有参数,它们都会在空格上拆分并为您删除结果。这可以节省您必须明确调用.strip()。
另一种方法是仅在第一个空格上拆分:with open('LIWC_words.txt', 'r') as document:
answer = {}
for line in document:
if line.strip(): # non-empty line?
key, value = line.split(None, 1) # None means 'all whitespace', the default
answer[key] = value.split()
.split()限制分割数量的第二个参数,保证最多返回2个元素,从而可以将赋值中的值解包为key和value。
这两种方法都会导致:{'aaien': ['12', '13', '39'],
'aan': ['10'],
'aanbad': ['12', '13', '14', '57', '58', '38'],
'aanbaden': ['12', '13', '14', '57', '58', '38'],
'aanbeden': ['12', '13', '14', '57', '58', '38'],
'aanbid': ['12', '13', '14', '57', '58', '39'],
'aanbidden': ['12', '13', '14', '57', '58', '39'],
'aanbidt': ['12', '13', '14', '57', '58', '39'],
'aanblik': ['27', '28'],
'aanbreken': ['39']}
如果您仍然只看到一个键和文件的其余部分作为(拆分)值,则输入文件可能使用非标准行分隔符。通过将字符添加到模式,打开具有通用行结束支持的文件U:with open('LIWC_words.txt', 'rU') as document: