【问题标题】:Counter for nested list [duplicate]嵌套列表的计数器[重复]
【发布时间】:2020-06-05 16:14:14
【问题描述】:

对于像这样的列表 x [8, 8, 8] 这工作正常:

from collections import Counter
Counter(x)

对于这样的列表 x 虽然[[6, 88], [35, 64], [15, 7]] 以上不起作用。

我对通过 sFrames、panda 等进行计数不感兴趣。可以类似地对这样的列表执行此操作,还是我必须在列表中创建一个新的正确连接的值才能计数?

我对 6,88,35,...的计数不感兴趣,而对 [6,88],[35,64]...的计数感兴趣。

所以预期的输出应该是:

Counter({[6,88]: 3}, ...)

如果可能的话。

【问题讨论】:

  • 该输出是不可能的,因为这些列表不能是键。 Counter(map(tuple, x))?
  • 这只是改变了它的欺骗性,我已经做到了。
  • 这就是应该发生的事情。您的问题不清楚,至少有三个人(两名投票者和一名回答者)将其解释为关于扁平化,并且没有表现出任何研究努力。 为什么你不能使用元组?这是什么上下文?还有其他秘密限制吗?
  • 我不是说你没有努力,我不知道,我是说这个问题没有显示任何。例如,鉴于 Counter 的错误,您可以像我一样查找当前的欺骗。
  • 请不要在问题中添加答案。关于在列表中计数列表的欺骗是关于列表不可散列的欺骗(即元组,显然你毕竟可以使用)的相同解决方案的更具体应用;如果一个是相关的,那么两者都是。我删除了第三个,这再次意味着以下(已接受!)答案不适用。

标签: python python-3.x


【解决方案1】:

多维列表可以通过列表理解来展平,因此您可以尝试:

c = Counter([i for sublist in x for i in sublist])

【讨论】:

  • @thebluephantom 如果它不是您问题的答案,您为什么要接受它?您抱怨的第一个欺骗是正确的,或者这个答案是错误的。
  • 因为我可以将答案用作解决方法。
  • 问题不在于扁平化...检查预期输出
猜你喜欢
  • 2017-10-06
  • 2015-10-10
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
相关资源
最近更新 更多