计算嵌套列表中的第一个元素

赛通

我正在尝试计算嵌套列表中第一个元素的出现次数:

我的嵌套列表看起来像这样(这是一个截断的列表,有几个条目,如:['powerpc', 'powerpc', '4565975']

list = [...
    ['powerpc', 'powerpc', '4565975'],
    ['macs', 'mac', '4565975'], 
    ['einsetzen', 'einsetz', '4565975'],
    ['thema', 'thema', '4565975']
     ...
    ] 

这是一个截断的列表,例如有几个条目:['powerpc', 'powerpc', '4565975']。

所以我想计算在这种情况下“powerpc”、“mac”、“einsetzten”和“thema”的出现次数。另外我想根据最后的数字合并嵌套列表。到目前为止,我无法弄清楚如何合并它们。我仍在尝试正确计算列表中的元素。

所以我的预期结果是这样的:

nl = [['powerpc', 'powerpc', '4565975', 2],
     ['macs', 'mac', '4565975', 5], 
     ['einsetzen', 'einsetz', '4565975', 4],
     ['thema', 'thema', '4565975', 3]
     ]

到目前为止,我尝试使用此代码计算每个嵌套列表中的第一个元素:

nl = [[x,l.count(x[0])] for l in list for x in set(l)]

但这会计算嵌套列表中的每个元素,而不仅仅是嵌套列表中的第一个元素。

这是此代码产生的输出:

nl =        [['powerpc', 0], 
            ['4565975', 0], 
            ['mac', 0], 
            ['macs', 0], 
            ['4565975', 0], 
            ['einsetz', 0], 
            ['einsetzen', 0], 
            ['4565975', 0], 
            ['thema', 0]]

我怎样才能正确地做到这一点?

安德乌

根据我对您的问题的理解,这可能是错误的,以下内容应该为您提供所需的输出:

from itertools import groupby
# From what I understand, your full list looks something like this
lst = [
        ['powerpc', 'powerpc', '4565975'],
        ['macs', 'mac', '4565975'], 
        ['einsetzen', 'einsetz', '4565975'],
        ['thema', 'thema', '4565975'],
        ['powerpc', 'powerpc', '4565975'],
        ['macs', 'mac', '4565975'], 
        ['einsetzen', 'einsetz', '4565975'],
        ['thema', 'thema', '4565975'],
        ['powerpc', 'powerpc', '4565975'],
        ['macs', 'mac', '4565975'], 
        ['einsetzen', 'einsetz', '4565975'],
        ['thema', 'thema', '4565975']
      ] 
sorted_lst = sorted(lst)
n1 = [l + [len(list(g))] for l, g in groupby(sorted_list)]
print(n1)
# [['einsetzen', 'einsetz', '4565975', 3], ['macs', 'mac', '4565975', 3],['powerpc', 'powerpc', '4565975', 3], ['thema', 'thema', '4565975', 3]]

如果没有看到您的实际列表,我无法保证输出,但是我的测试得出了我预期的结果。这种方法有两个组成部分。第一个组件是对列表进行排序。默认情况下,它会根据嵌套列表中的第一个条目对列表进行排序,因此无需传递排序键。现在sorted_lst根据每个列表中的第一个条目按字母顺序组织您的所有列表项。下一步是使用itertools.groupby将相似的项目组合在一起,并计算每个项目的数量。然后我们重建列表,将每个元素的计数附加到该元素的末尾。你可以在这里阅读更多itertools.groupby

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从嵌套列表的子列表中提取第一个和最后一个元素

选择嵌套列表的第一个元素

Python:嵌套列表中的第一个元素

嵌套列表中的第一个值的总和

嵌套列表中的第一个元素的总和

在嵌套列表的第一个位置计数相同的元素

Ansible从列表中获取第一个元素

删除嵌套列表的每个子列表的第一个元素

当第一个元素匹配时,如何对嵌套列表进行排序?

提取列表中列表的第一个元素

从列表中创建一个数组,其中数组的第一个元素是列表中的第一个元素

列表中的第一个元素haskell

如何在terraform的嵌套列表中切片第一个元素

根据第一个元素组合嵌套列表

返回Haskell中列表的第一个元素

如何拆分嵌套列表元素的第一个元素?

计算列表中连续元素之间的差异时,如何保持列表中的第一个元素不变?

将嵌套列表转换为dict,其中列表的第一个元素是dict的键

在列表中删除元组的第一个元素

将嵌套列表的第一个元素绑定到嵌套列表的后续元素

基于嵌套列表的第一个元素合并嵌套列表

列表/嵌套列表中的第一个元素

如何访问嵌套列表的第一个元素?

如何通过嵌套列表中第一个元素的值提取子列表

按嵌套列表中的第一个元素过滤掉它们

计算索引的第一个列表元素

如何获取嵌套列表中的所有元素,其中每个列表的第一个元素是特定数字?

在列表中通过条件的第一个元素之后添加一个元素

在嵌套列表中从第一个列表中选择第一个元素,从第二个列表中选择第二个元素,依此类推