【发布时间】:2017-10-21 03:29:15
【问题描述】:
我想通过调用 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 可以做我想做的事吗?是否有其他(相当有效的)方法可以做到这一点?
【问题讨论】:
-
列表是可变的。考虑一下这些数据和计数的瞬态性。如果每个包含列表都是一条记录,请认真考虑 GWW 和 James 关于将包含列表转换为元组的建议。