列表列表的python计数器?

标签 python list count

我想通过调用 collections.Counter 来计算列表中项目的频率。诀窍是我的列表本身包含列表:

给定:

[[1,"a"], [2,"b"], [3,"c"], [1,"a"], [1,"a"]

制作:

{
  ([1,"a"], 3),
  ([2,"b"], 1),
  ([3,"c"], 1)
}

当我使用我的列表实例化 Counter 时,我得到 TypeError: unhashable type: 'list'.

Counter 可以做我想做的事吗?是否有其他一些(相当有效的)方法可以做到这一点?

最佳答案

Counter 返回一个哈希表。为此, key (正在计算的内容)必须是可散列的。不幸的是,列表不可散列,这就是您看到错误的原因。

一种解决方法是将每个内部列表转换为一个元组

from collections import Counter

x = [[1,"a"], [2,"b"], [3,"c"], [1,"a"], [1,"a"]]
Counter(tuple(item) for item in x)
# returns:
Counter({(1, 'a'): 3, (2, 'b'): 1, (3, 'c'): 1})

关于列表列表的python计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46859770/

相关文章:

r - 在 R 中创建滚动壁计数变量

sql - 如何加快 PostgreSQL 表中的行计数?

python - 按值python打印字典键和值

mysql - 关于显示类别广告计数器的给定查询有什么问题?

python - 在 Python 3.x 中将多个词典写入多个 csv 文件

python - Python mongoengine 中没有重复项的 ListField

python - Numpy:根据形状角选择任意形状

python - 使用 pyserial 控制 Arduino Uno 板上的特定引脚

c# - 将 List<Enum> 转换为 List<string>

java - Java 中的列表不起作用