计算 Python 中另一个列表中每个嵌套列表的出现次数

Count the occurrence per nested list in another list in Python

我正在努力获得我想要的输出。我有两个列表,如下所示:

h3_FP_DB = [['KE', 'EH', 'LA'], ['KE', 'EH'], ['KE'], ['EH'], ['KE', 'EH']]

h3_FP = [['KE'], ['KE', 'LA'], ['KE', 'EH', 'LA'],  ['KE', 'EH'], ['LA'], ['LA', 'EH'], ['EH']]

我想知道列表 h3_FP_DB 中 h3_FP 中每个嵌套列表的出现情况。所以使用上面的例子我想要的输出会给出下面的计数。不知道哪个type/structure有好处:

KE: 4
KE, LA: 1
KE, EH, LA: 1
KE, EH: 3
LA: 4
LA, EH: 1
EH: 4

使用 this 示例中的代码,我编写了以下代码:

h3_FP_Occurence = []

for i in range(len(h3_FP)):
  count = len([i for idx in range(len(h3_DB_FP)) if h3_DB_FP[idx : idx + len(i)] == i])
  h3_DB_FP.append(count)

这给了我以下错误

TypeError: object of type 'int' has no len()

我在 Stack overflow 和网络上进行了广泛的查看,但我找不到任何东西。知道如何计算主列表中嵌套列表的出现次数吗?

您可以使用嵌套的 dictionary/list 理解来检查 h3_FP 中每个列表中的每个值是否在 h3_FP_DB 中的每个列表中,并将结果输出到字典列表中:

h3_FP_Occurence = [{ ', '.join(l): sum(all(v in hl for v in l) for hl in h3_FP_DB) } for l in h3_FP]

输出:

[
 {'KE': 4},
 {'KE, LA': 1},
 {'KE, EH, LA': 1},
 {'KE, EH': 3},
 {'LA': 1},
 {'LA, EH': 1},
 {'EH': 4}
]