【发布时间】:2018-07-05 09:35:50
【问题描述】:
我有一本字典如下:
mydict = {'HEALTH': {'NumberOfTimes': 2, 'Score': 12},
'branch': {'NumberOfTimes': 4, 'Score': 34},
'transfer': {'NumberOfTimes': 1, 'Score': 5},
'deal': {'NumberOfTimes': 1, 'Score': 10}}
对于mydict 中的每个键,我想将Score 除以NumberOfTimes,并将其保存在列表或另一个字典中。目标是:
newdict = {word:'HEALTH', 'AvgScore': 6},
{word:'branch': 4, 'AvgScore': 8.5},
{word:'transfer', 'AvgScore': 5},
{word:'deal', 'AvgScore': 10}}
我对后者的代码如下:
newdict = {}
for k, v in mydict.items():
newdict[k]['AvgScore'] = v['Score']/v['NumberOfTimes']
但这给出了错误KeyError: 'HEALTH'。
我也尝试了以下方法:
from collections import defaultdict
newdict = defaultdict(dict)
for k, v in mydict.items():
newdict[k]['AvgScore'] = v['Score']/v['NumberOfTimes']
这里出现以下错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-237-d6ecaf92029c> in <module>()
4 # newdict = {}
5 for k, v in mydict.items():
----> 6 newdict[k]['AvgScore'] = v['Score']/v['NumberOfTimes']
7
8 #sorted(newdict.items())
TypeError: string indices must be integers
如何将键值对添加到新字典中?
【问题讨论】:
-
用
for k, v in mydict.items():替换for k, v in word_vec.items(): -
对于第一个错误
KeyError: 'HEALTH',尝试使用update添加新键,如果你有嵌套的dicts,你应该通过youdict.update添加所有级别。 -
问题是你尝试设置一个像
newdict[k]['AvgScore']这样的嵌套字典。请参阅this post 了解实现这种行为的方法。
标签: python dictionary indexing key-value