提及items不会返回所有的字典项

2024-06-09 20:08:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用iteritems()迭代字典,在Django中创建对象。但是,我发现创建的对象的数量与dictionary对象的数量不同。在

进一步研究后,我发现dictionary的iteritems()方法只返回197个元组,而字典本身包含269个项。在

data = {...}
print len(data) #output: 269
for k, v in data.iteritems():
    Category.objects.create(name=k).save()
len(Category.objects.all()) #output: 197

模型定义:

^{pr2}$

Tags: 对象django方法outputdata数量dictionarylen
1条回答
网友
1楼 · 发布于 2024-06-09 20:08:05

首先,我不建议您使用len(Category.objects.all())来计数对象。相反,您应该使用

Category.objects.count()

这不是风格问题,而是效率问题。后者使用sqlcount,因此对象的数量不是由python计算的,而是由您的数据库(mysql、sqlite等)计算的

我不能评论为什么你得到192个对象,而不是267个。我的猜测是因为你的create函数得到了一些不可用的参数——也许k不是一个字符串,或者它的长度超过了100个字符。在

你能调查一下哪些元素没有保存并提供这些信息吗?在

相关问题 更多 >