我使用Django 1.8。我有一张桌子“桌子”。我想在此掠夺:
test['Kamil'] += 1
test['Wiesiek'] +=1
最后看起来像这样 - 例如:
test['Kamil'] = 10
test['Wiesiek'] = 5
Data = Table.objects.filter(User=request.user.username)
test = {}
for i in Data:
test[i.Name] += 1
unfortunelly django在/ page /
显示错误.. KeyError如果我没有“+ =” - “=”那么一切正常。
我需要计算出多少相同的名字。我可以访问
的名称和数量谢谢:)
答案 0 :(得分:4)
当您尝试+ =
时,您的词典没有该键的值您可以使用集合中的defaultdict,它将默认值0设置为新键
from collections import defaultdict
Data = Table.objects.filter(User=request.user.username)
test = defaultdict(int)
for i in Data:
test[i.Name] += 1
答案 1 :(得分:1)
检查密钥是否存在
test['Kamil'] = 10
test['Wiesiek'] = 5
Data = Table.objects.filter(User=request.user.username)
test = {}
for i in Data:
if test.get(i.Name, None):
test[i.Name] += 1
else:
test[i.Name] = 1
答案 2 :(得分:0)
您是否忘记先将密钥放入字典? E.G。
test = {}
for i in Data:
if i.Name not in test:
test[i.Name] = 1
else:
test[i.Name] += 1