use*_*220 2 python dictionary distinct-values
我的文件看起来像这样:
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
...
Run Code Online (Sandbox Code Playgroud)
我想用key =这个词(比如'aaien')创建一个字典,值应该是它旁边的数字列表.所以它必须这样看:{'aaien':['12,13,39'],'aan':['10']}
这段代码似乎不起作用.
document = open('LIWC_words.txt', 'r')
liwcwords = document.read()
dictliwc = {}
for line in liwcwords:
k, v = line.strip().split(' ')
answer[k.strip()] = v.strip()
liwcwords.close()
Run Code Online (Sandbox Code Playgroud)
python给出了这个错误:
ValueError: need more than 1 value to unpack
Run Code Online (Sandbox Code Playgroud)
您将您的行拆分为单词列表,但只给它一个键和值.
这将有效:
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:]
Run Code Online (Sandbox Code Playgroud)
请注意,您不需要提供.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()
Run Code Online (Sandbox Code Playgroud)
.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']}
Run Code Online (Sandbox Code Playgroud)
如果您仍然只看到一个键和文件的其余部分作为(拆分)值,则输入文件可能使用非标准行分隔符.通过将字符添加到模式,打开具有通用行结束支持的文件U:
with open('LIWC_words.txt', 'rU') as document:
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23183 次 |
| 最近记录: |