我在这里得到帮助的功能有问题,我正在尝试理解并纠正它。
这是函数(带有一些注释/打印只是为了帮助我调试)
def accumulate_by_category(word_values, cat_sums, cats):
for word, value in word_values.items():
print word
for cat in cats[word]:
print cat
#cat_sums[cat] += value
cat_sums[cat].append(value)
print cat_sums
现在, word_values 应该看起来像这样:
{'a': 4, 'angry': 0, 'sad': 0, 'grateful': 0, 'happy': 0}
cat_sums 应该是这样的:
defaultdict(<type 'list'>, {'composed': [0], 'elated': [0], 'unsure': [0], 'hostile': [0], 'tired': [0], 'depressed': [0], 'guilty': [0], 'confused': [0], 'clearheaded': [0], 'anxious': [0], 'confident': [0], 'agreeable': [0], 'energetic': [0]})
猫应该是这样的:
defaultdict(<type 'list'>, {'depressed': ['sad'], 'elated': ['happy', 'grateful', 'a'], 'hostile': ['angry']})
基本上,该函数试图做的是获取 word_values 中的每个值,并将它们最终添加到 cat_sums。这不是目前正在发生的事情 - 出于某种原因,没有任何值被附加。我很难弄清楚为什么 - 当我尝试时print cat
,它会出现空白。但是print word
给了我一个单词列表。从理论上讲,对于 cat in cats[word] 应该提出 cat 中的每个术语,但事实并非如此。
我究竟做错了什么?
我最终只想将所有值添加到 cat_sums,以便将其写入数据库。另外,我是否必须返回 cat_sums 的值才能做到这一点?
这是我的数据库编写代码(catnums 是提交给 cat_sums 的参数):
for key in catnums:
x = catnums[key]
for value in x:
cmd = "UPDATE resulttest SET value=\"" + str(value) + "\" WHERE category=\"" + key + "\"";
c.execute(cmd)
db.commit()