2016-03-01 48 views
0

这些是我正在使用我的变量的命令和输出。如何从Django查询集创建的Python字典中获取计数?

>>tags_list = list(tags_list) 
>>print (tags_list) 
[<Tag: Book needed>, <Tag: Book needed>, <Tag: Lab important>, <Tag: Easygoing>, <Tag: Book needed>, <Tag: Tough quizzes>, <Tag: Important lectures>, <Tag: Book needed>, <Tag: Tough quizzes>] 

tags_list是使用itertools.chain连接Django查询集制成的列表。

>>tags = Counter(tags_list) 
>>print (tags) 
Counter({<Tag: Book needed>: 4, <Tag: Tough quizzes>: 2, <Tag: Important lectures>: 1, <Tag: Lab important>: 1, <Tag: Easygoing>: 1}) 

现在,我正在使用collections.Counter计算queryset并将其转换为字典。

>>for tag in tags: 
     >>print tag 

Book needed 
Tough quizzes 
Important lectures 
Lab important 
Easygoing 

所以现在我打印我的怪字典中的单个标签。 不过,我想输出是这样的

Book needed (4) 
Tough quizzes (2) 
Important lectures (1) 
Lab important (1) 
Easygoing (1) 

我该怎么办呢?我不确定字典中的键是什么,我的意思是它们是django对象,但我不知道如何访问它们。任何帮助表示赞赏。

回答

4

计数器的行为像一个正常的字典;当你迭代它时,它会给你钥匙。如果您也想要这些值,请重复执行.items()

for tag, count in tags.items(): 
     print "{} ({})".format(tag, count) 
2

你只印刷字典键(标签),但你也可以访问值(计数):

for tag in tags: 
    print tag, tags[tag]