擅长:python、mysql、java
<p>一种方法是</p>
<pre><code>d = {'C-STD-B&M-SUM:-1': 0, 'C-STD-B&M-SUM:-10': 4.520475, 'H-NSW-BAC-ART:-9': 0.33784000000000003, 'H-NSW-BAC-ART:0': 0, 'H-NSW-BAC-ENG:-59': 0.020309999999999998, 'H-NSW-BAC-ENG:-6': 0,}
def divide_dictionaries(somedict):
out = {}
for k,v in somedict.items():
head, tail = k.split(":")
subdict = out.setdefault(head, {})
subdict[tail] = v
return out
</code></pre>
<p>这给了</p>
^{pr2}$
<p>一些注意事项:</p>
<p>(1)我们使用嵌套词典,而不是创建单独的命名词典,这不方便。在</p>
<p>(2)我们使用了<a href="https://docs.python.org/3/library/stdtypes.html#dict.setdefault" rel="nofollow">setdefault</a>,这是一种方便的方法,可以说“在字典中给我一个值,但是如果没有值,则将其添加到字典中并返回它。”。保存<code>if</code>。在</p>
<p>(3)我们可以使用<code>.split(":")</code>而不是硬编码宽度,至少假设这是分隔符,这不是很健壮!在</p>
<p>(4)使用<code>dict</code>(内置类型的名称)作为变量名是个坏主意。在</p>