如何在多维数组上使用集合计数器?

时间:2018-10-03 16:48:07

标签: python-3.x

我有一个json数据,我想了解人们出现在列表中的次数。这是一种在列表中查找事件的方法。

[
  [
    {
      "user": "User-1",
    },
    {
      "user": "User-2",
    },
  ],
  [
    {
      "user": "User-3",
    },
    {
      "user": "User-2",
    },
  ]
]


users = Counter(k['user']
                    for k in leaderboards if k.get('user'))

但这给我一个错误。 'list' object has no attribute 'get'

我该如何解决?

谢谢。

1 个答案:

答案 0 :(得分:2)

您快要接近了。您将需要再次遍历,因为您有一个列表列表。一个循环可让您进入内部列表,而下一个循环可帮助您迭代内部列表:

from collections import Counter

leaderboards = [
  [
    {
      "user": "User-1",
    },
    {
      "user": "User-2",
    },
  ],
  [
    {
      "user": "User-3",
    },
    {
      "user": "User-2",
    },
  ]
]


users = Counter(x['user'] for k in leaderboards for x in k if x.get('user'))

print(users)
# Counter({'User-2': 2, 'User-1': 1, 'User-3': 1})