繁体   English   中英

计算子列表中的出现次数

[英]Count occurrence in sub-list

我是 python 的新手,你能帮我使用 python 实现这个程序吗?

我有一个清单:输入

list=[["word1", "word2"],["word1", "word2","word1"], ["word4", "word5","word4", "word5", "word2", "word3"]]

output:

out=[
   {"word1", "word2",2}, {"word2", "word1",1},{"word4", "word5",2},{"word5", "word4",1},
{"word5", "word2",1},{"word2", "word3",1}

]

它是如何工作的:它计算子列表中的连续单词,如果在另一个子列表中找到新的出现,它会更新

如果我理解正确,您想计算所有列表中排序的单词对。 您可以使用collections.Counter和生成器表达式来执行此操作。

>>> import collections
>>> lst = [["word1", "word2"],
...        ["word1", "word2", "word1"],
...        ["word4", "word5", "word4", "word5", "word2", "word3"]]
...
>>> collections.Counter((a, b) for l in lst for a, b in zip(l, l[1:]))
Counter({('word1', 'word2'): 2,
         ('word2', 'word1'): 1,
         ('word4', 'word5'): 2,
         ('word5', 'word4'): 1,
         ('word5', 'word2'): 1,
         ('word2', 'word3'): 1})

结果的格式与您的示例略有不同,但也更有用。 如果你真的想要一个集合列表,你可以使用[{a,b,c} for (a, b), c in _.items()] 请注意,这些集合可能会以不同的方式“排序”(或者实际上根本没有排序)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM