在列表列表中查找项目频率

时间:2016-11-02 20:05:04

标签: python frequency apriori

我们说我有一个列表列表,我想找到一对(或更多)元素总共出现的频率。

例如,如果我有[[a,b,c],[b,c,d],[c,d,e]

我想:(a,b)= 1,(b,c)= 2,(c,d)= 2,等等。

我尝试找到一个可用的apriori算法,允许我这样做,但我在python中找不到一个易于实现的算法。

我如何以更好的方式解决这个问题?

1 个答案:

答案 0 :(得分:0)

这是一种方法:

from itertools import combinations

l = [['a','b','c'],['b','c','d'],['c','d','e']]
d = {}
for i in l:
    # for every item on l take all the possible combinations of 2
    comb = combinations(i, 2)
    for c in comb:
        k = ''.join(c)
        if d.get(k):
            d[k] += 1
        else:
            d[k] = 1

结果:

>>> d
{'bd': 1, 'ac': 1, 'ab': 1, 'bc': 2, 'de': 1, 'ce': 1, 'cd': 2}