[英]Python - How to count number of occurrences
我正在使用jira-python库从jira查询数据。 我从jira取回了我需要的数据,但是处理数据给我带来了问题。
我正在计算从查询中返回的所有组件的出现次数。 例如,我的查询将返回结果:
Component A
Component B
Component A
Component C
我正在寻找的结果是这样的:
Component A, 2
Component B, 1
Component C, 1
这是我当前代码的一个片段:
search = 'jira query'
issues = jira.search_issues(search, maxResults=100)
for issue in issues:
[c.name for c in issue.fields.components]
从这里我试图计算和求和c.name
sum(1 for c.name in issue.fields.components)
但是,这不会产生正确的结果,因为我会得到类似计算每个结果中字符出现次数的结果。
任何见解/帮助将不胜感激
将名称的列表/生成器表达式传递给collections.Counter
对象。
import collections
>>> my_result = '''Component A
... Component B
... Component A
... Component C'''
>>> my_result = my_result.split('\n') # if they are saperated by newline
>>> my_result
['Component A', 'Component B', 'Component A', 'Component C']
>>> my_result_count = collections.Counter(my_result)
>>> my_result_count
Counter({'Component A': 2, 'Component B': 1, 'Component C': 1})
>>> for x in sorted(my_result_count.keys()):
... print x + ", " + str(my_result_count[x])
...
Component A, 2
Component B, 1
Component C, 1
collections.Counter
将返回字典及其单词的出现
仔细研究问题和组成部分并计数。
# dictionary where we will hold results of counting of componets
count_result = {}
# we search for issues we are interested in
issues = jira.search_issues("project = PROJECT_KEY", maxResults=100)
for issue in issues:
# in case there is more components we iterate through them all
# and count them in count_result dictionary
for component in [c.name for c in issue.fields.components]:
if count_result.get(component):
# if component already exists in count_result dictionary
count_result[component] += 1
else:
# if component doesn't exists in count_result dictionary
count_result[component] = 1
# print out of result
for name,value in count_result.items():
print "%s, %d" % (name, value)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.