如何计算邮件数量?

时间:2018-12-06 10:12:58

标签: python json python-3.x

如何计算每个用户写了多少条消息?唯一标识符-userId

从这里我加载json:http://jsonplaceholder.typicode.com/posts

result_one = requests.get('http://jsonplaceholder.typicode.com/posts')
result_text_one_json = json.loads(result_one.text)
for item in result_text_one_json:
    print(item)

3 个答案:

答案 0 :(得分:2)

这就是collections.Counter的工作:

from collections import Counter
counter = Counter(item['userId'] for item in items)
print(counter)

答案 1 :(得分:1)

使用collections.defaultdict()

from collections import defaultdict

d = defaultdict(int)
for item in result_text_one_json:
    d[item['userId']] += 1

d的最后将是字典,其中将user_ids作为密钥,并将每个人的消息计数作为其值。

演示:

In [28]: from collections import defaultdict
    ...: 
    ...: d = defaultdict(int)
    ...: for item in result_text_one_json:
    ...:     d[item['userId']] += 1
    ...:     

In [29]: d
Out[29]: 
defaultdict(int,
            {1: 10,
             2: 10,
             3: 10,
             4: 10,
             5: 10,
             6: 10,
             7: 10,
             8: 10,
             9: 10,
             10: 10})

答案 2 :(得分:1)

您可以遍历每个用户并以userId为键,并以显示的项数为值来构建字典。

result_one = requests.get('http://jsonplaceholder.typicode.com/posts')
result_text_one_json = json.loads(result_one.text)
d = {}
for item in result_text_one_json:
    if item['userId'] not in d:
        d[item['userId']] = 0
    d[item['userId']] += 1

编辑:尽管两个答案的结果相同,但是@Kasrâmvd使用collections.defaultdict()的答案更为简洁,因为您无需使用0初始化每个键。