Python - 将复杂的文件读入字典

Mik*_*ail 3 python file-io dictionary

我的输入文件是:

-150     150    -90      130    1
-150     150    -150     170    1
-150     150    -110     140    1
-150     160    -80     -20     1
-150     170    -140     160    1
-150     170    -70     -40     1
-140    -170    -110     150    1
-140     130    -120     110    1
-140     140     160    -150    1
-140     160    -150     150    1
Run Code Online (Sandbox Code Playgroud)

我需要创建一个python字典,使得键是前两列,而值是另一个字典,其中键是3 + 4列,值是第5列:

'-140 160' : {'-150 150' : 0.0188679245283019},
'-140 -170' : {'-110 150' : 0.0188679245283019},
'-150 170' : {'-140 160' : 0.0188679245283019, '-70 -40' : 0.0188679245283019},
'-150 160' : {'-80 -20' : 0.0188679245283019},
'-150 150' : {'-150 170' : 0.0188679245283019, '-110 140' : 0.0188679245283019}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我一直在使用perl脚本将其转换为看起来像我上面显示的文本,然后将该文本复制粘贴到我的python代码中.(该值已成为一个分数,因为我将其除以总和,即56

Fre*_*Foo 7

from collections import defaultdict

bigdict = defaultdict(dict)
for ln in file:
    a,b,c,d,e = ln.split()
    bigdict[(a,b)][(c,d)] = e
Run Code Online (Sandbox Code Playgroud)

如果你想要字符串键,替换(a,b)'%s %s' % (a, b)和类似的(c,d).

  • 可能想要用"%s%s"(a,b)代替(a,b),同样用(c,d)代替OP. (3认同)