我在这里遇到了一个函数的问题,我试图理解它并纠正它。为什么我的价值不加在我的计划中?
这里的功能(有一些评论/打印在简单地抛出来帮我调试)
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_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()
我确定这是由于我如何遍历列表。我快到了。 – 2012-07-19 02:45:53