developer_base = Counter({
'user1': {'XS': 0, 'S': 0, 'M': 0, 'L': 0, 'XL': 0},
'user2': {'XS': 0, 'S': 0, 'M': 0, 'L': 0, 'XL': 0},
'user3': {'XS': 0, 'S': 0, 'M': 0, 'L': 0, 'XL': 0},
'user4': {'XS': 0, 'S': 0, 'M': 0, 'L': 0, 'XL': 0},
})
循环以收集计数器数据:
for y in time_list:
story_size = models.get_specific_story(y['story_id'])
if story_size is not "?":
counts = Counter(y['minutes_spent'])
print(counts)
developer_base = developer_base + counts
Counter
应该成为for循环的一部分吗? story_size总是等于嵌套字典中的一个键(S,XS,M等)。 time_list
具有['minutes_spent'],这是需要添加到字典中的值。问题似乎是time_list有一个嵌套的dict,它是['user'] ['first_name'],它等于user1到user4的developer_base键。
所以我需要为每个用户添加time_list中的所有'minutes_spent'。
更新:JSON数据
[{'project_slug': 'test', 'project_id': 19855, 'date': '2016-02-11', 'task_name': None, 'iteration_name': 'test', 'notes': '', 'user_id': 81946, 'story_id': 392435, 'iteration_id': 76693, 'story_name': 'test', 'user': {'id': 81946, 'last_name': 'test', 'first_name': 'user1', 'email': 'test', 'username': 'test'}, 'project_name': 'Development', 'id': 38231, 'minutes_spent': 240}]
数据要大得多,但这只是一个整体。
答案 0 :(得分:1)
在第一个代码段中,您正在滥用Counter
。该片段仅适用于Python 2中的怪癖,可以比较dicts。计数器的值应该是数字。
同样,y['minutes_spent']
是一个整数,Counter(y['minutes_spent'])
只会抛出一个错误。此外,story_size is not "?"
does not do what you expect。
假设真正的问题是
为每个用户添加time_list中的所有'minutes_spent'。
然后你可以使用一个计数器:
from collections import Counter
c = Counter()
for y in time_list:
c[y['user']['id']] += y['minutes_spent']