Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何找到属于列表的元素的频率?_Python - Fatal编程技术网

Python 如何找到属于列表的元素的频率?

Python 如何找到属于列表的元素的频率?,python,Python,我试图获得列表中每个列表的频率。 下面是我的代码 from collections import Counter my_list=[[1,2,3],[1,2,3]] ctr=[] ctr = Counter(my_list) print(ctr[[1,2,3]]) 此代码适用于数字列表,即如果my_list=[1,2,3]。但对于列表列表,它不起作用。 ctr[[1,2,3]应打印2,但存在如下错误 TypeError: unhashable type: 'list' 有人能帮忙吗?问题

我试图获得列表中每个列表的频率。 下面是我的代码

from collections import Counter
my_list=[[1,2,3],[1,2,3]]
ctr=[]
ctr = Counter(my_list)
print(ctr[[1,2,3]])
此代码适用于数字列表,即如果
my_list=[1,2,3]
。但对于列表列表,它不起作用。
ctr[[1,2,3]
应打印
2
,但存在如下错误

  TypeError: unhashable type: 'list'

有人能帮忙吗?

问题是
计数器创建了一个字典,而您不能拥有一个带有
列表
类型键的字典。因此,当您提供一个列表列表时,它会失败。要解决此问题,请将内部列表转换为元组,如下所示:

from collections import Counter

my_list  = [[1, 2, 3], [1, 2, 3]]
new_list = [tuple(x) for x in my_list]  # or overwrite with my_list = ..

ctr = Counter(new_list)    
print(ctr[(1, 2, 3)])  # -> 2

问题是,
计数器
创建了一个字典,并且不能有一个带有
列表
类型键的字典。因此,当您提供一个列表列表时,它会失败。要解决此问题,请将内部列表转换为元组,如下所示:

from collections import Counter

my_list  = [[1, 2, 3], [1, 2, 3]]
new_list = [tuple(x) for x in my_list]  # or overwrite with my_list = ..

ctr = Counter(new_list)    
print(ctr[(1, 2, 3)])  # -> 2
一个解决方案:

from collections import Counter

lst = [[1,2,3],[1,2,3]]

ctr = Counter(map(tuple, lst))

ctr[(1,2,3)]
# 2
解释

  • 计数器
    实例是字典,因此要求不可变 钥匙。元组是不可变的,而列表不是
  • 此外,
    计数器
    实例接受任何iterable,而不仅仅是列表
  • 惰性地执行元组转换意味着您不必创建 一份新的名单
一种解决方案:

from collections import Counter

lst = [[1,2,3],[1,2,3]]

ctr = Counter(map(tuple, lst))

ctr[(1,2,3)]
# 2
解释

  • 计数器
    实例是字典,因此要求不可变 钥匙。元组是不可变的,而列表不是
  • 此外,
    计数器
    实例接受任何iterable,而不仅仅是列表
  • 惰性地执行元组转换意味着您不必创建 一份新的名单

关于错误消息有什么不清楚的地方<代码>计数器
创建一个字典,您不能拥有一个带有
列表
类型键的字典。所以它失败了。当你调用两个相同的列表时,你是指它们的元素的顺序,还是仅仅是元素的顺序?这甚至是它们的元素的顺序,这很重要,但错误消息并不清楚<代码>计数器创建一个字典,您不能拥有一个带有
列表
类型键的字典。所以它失败了。当你调用两个相同的列表时,你是指它们的元素的顺序,还是仅仅是元素的顺序?这甚至是它们的元素的顺序,这一点很重要。你是指
计数器(新列表)
@Jean-Françoisfare-Oops。。打字错误谢谢你是说
计数器(新列表)
@Jean-Françoisfare-Oops。。打字错误谢谢我更喜欢这个版本+1我更喜欢这个版本+1.