<p>使用<a href="https://docs.python.org/2/library/ast.html#ast.literal_eval" rel="nofollow noreferrer">ast.literal_eval</a>可以将字符串列表转换为<code>list</code></p>
<pre><code>from collections import defaultdict
import ast
with open('tst.txt') as fp:
d = defaultdict(list)
for line in fp:
k, v = line[: line.index('):') + 1], ast.literal_eval(line[line.index(':[') + 1:])
d[k] += v
print(dict(d))
</code></pre>
<p><strong>输出:</strong></p>
<pre><code>{
M:org.apache.mahout.common.RandomUtilsTest:testHashDoubl : ['(O)java.lang.Double:<init>(double)', '(M)java.lang.Double:hashCode()', '(S)org.apache.mahout.common.RandomUtils:hashDouble(double)', '(S)org.apache.mahout.common.RandomUtilsTest:assertEquals(long,long)', '(O)java.lang.Double:<init>(double)']
M:org.apache.mahout.common.RandomUtilsTest:testHashFloa : ['(M)java.util.Random:nextLong()', '(M)java.util.Random:nextLong()', '(M)java.util.Random:nextLong()', '(S)org.apache.mahout.common.RandomUtilsTest:assertEquals(java.lang.String,long,long)']
M:org.apache.mahout.math.AbstractVectorTest:testAssignBinaryFunctio : ['(I)org.apache.mahout.math.Vector:assign(org.apache.mahout.math.Vector,org.apache.mahout.math.function.DoubleDoubleFunction)', '(O)java.lang.StringBuilder:<init>()', '(I)org.apache.mahout.math.Vector:getQuick(int)', '(S)org.apache.mahout.math.AbstractVectorTest:assertEquals(java.lang.String,double,double,double)']
M:org.apache.mahout.math.AbstractVectorTest:testAssignBinaryFunction : ['(S)org.apache.mahout.math.function.Functions:plus(double)', '(I)org.apache.mahout.math.Vector:assign(org.apache.mahout.math.function.DoubleFunction)', '(S)org.apache.mahout.math.AbstractVectorTest:assertEquals(java.lang.String,double,double,double)']
}
</code></pre>