Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.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_List_Counter - Fatal编程技术网

Python 计算嵌套列表中的元素出现次数

Python 计算嵌套列表中的元素出现次数,python,list,counter,Python,List,Counter,这可能是一个非常简单的问题,但我在别处找不到答案,所以我会问。 查找元素在嵌套列表中出现的次数的最佳方法是什么? 例如: my_list=[[a,b,c,d],[a,b,z,d],[a,c,f,e],[d,w,f,a]] 我如何找到列表中第一个元素“a”的次数?或者更一般地说,“a”在我的列表中出现了多少次?我想有一种方法可以做到这一点。计数器,但我还没有弄明白 编辑 对于我的_列表,如果它是列表的第一个元素,我希望在计数时输出a:3。如果将问题更改为查看b是否是第二个元素,则所需的输出将是b

这可能是一个非常简单的问题,但我在别处找不到答案,所以我会问。 查找元素在嵌套列表中出现的次数的最佳方法是什么? 例如:

my_list=[[a,b,c,d],[a,b,z,d],[a,c,f,e],[d,w,f,a]]
我如何找到列表中第一个元素“a”的次数?或者更一般地说,“a”在我的列表中出现了多少次?我想有一种方法可以做到这一点。计数器,但我还没有弄明白

编辑
对于我的_列表,如果它是列表的第一个元素,我希望在计数时输出
a:3
。如果将问题更改为查看
b
是否是第二个元素,则所需的输出将是
b:2

使用嵌套的生成器表达式:

Counter(x for sublist in my_list for x in sublist)
要对第一个位置的项进行计数,另一个生成器表达式将获取该项进行计数:

Counter(sublist[0] for sublist in my_list)
演示:

或生成新列表并使用计数:

new_list = list(chain.from_iterable(my_list))
print new_list.count(whatever)
如果您想知道“a”是第一个的多少次,那么类似于:

sum(1 for el in my_list if el[0] is a) # or == a if object identity is not required
>>从集合导入defaultdict,计数器
>>>我的清单=['a'、'b'、'c'、'd']、['a'、'b'、'z'、'd']、['a'、'c'、'f'、'e']、['d'、'w'、'f'、'a']]
>>>pos_count=defaultdict(计数器)
>>>对于my_列表中的子列表:
对于枚举中的i,c(子列表):
位置计数[c][i]+=1
>>>pos_count['a'][0]
3.
>>>pos_count['b'][1]
2.

非故意复制的可能复制!我更感兴趣的是从列表中的特定位置(即第一个元素)开始计数,而不仅仅是在列表中,在这种情况下,您的问题不是很清楚。如果您提供了一个示例,那么还应该提供预期的输出。此外,我链接的问题肯定包含了足够的建议,您可以自己提出解决方案。这对于Python标记来说是非常典型的。关于如何使用[嵌套]列表执行x,有许多非常类似的问题答案可能已经在那里了。请理解,我不想阻止你提问——我想鼓励你在提问之前做更多的研究。如果您发现的材料不能完全解决您的问题,请在您的问题中链接到该材料,以便其他人可以看到您到目前为止的情况。感谢您的反馈,我将尝试在将来使我的问题更清楚:)如果我能找到我之前看过的问题,我将添加一些链接。有没有一种方法可以在不输入的情况下生成计数?例如,我的\u list[item][2]会把第二个位置的所有内容都计算在内吗?
使用
的计数器
比@MartijnPieters在这种情况下使用的方法要快。@Snaaa
[2]
指的是0个索引数组中的第三项。啊,当然,这是个愚蠢的错误。但是,有可能使用这种安排吗?@Snaaa我发布了这种安排。这其中有很多开销,有没有一种程序方法可以有效地做到这一点?工作只在用户/代码要求时完成?@InbarRose开销真的是个问题吗?我在考虑增长,一旦初始化,对于频繁/多次访问,这将更加有效。在这种情况下,采用MartijnPieters的方法,尽管我仍然不确定这是否真的是一个问题:D
new_list = list(chain.from_iterable(my_list))
print new_list.count(whatever)
sum(1 for el in my_list if el[0] is a) # or == a if object identity is not required