我有一个列表:
a = [(['7', '8'], ['4', '7'],['3', '4'],['3', '8'],['4', '8'],...............['3','4'])]
我想创建 2 列,它们给出了列表中元组的频率。例如:
bigram frequency
['7','8'] 2
['4','7'] 3
['3', '4'] 6
等等。
此外,考虑像 ['7','8'] 和 ['8','7'] 一样的条目(重复)。列中应只有一个条目,并且应将频率添加到该条目中。
我正在尝试使用
from collections import counter
并对它做一些循环,但我得到的错误是:
unhashable type: list
请您参考如下方法:
试试这个:
from collections import Counter
a = [(['7', '8'], ['4', '7'],['3', '4'],['3', '8'],['4', '8'],['3','4'],['7','8'],['8','7'],['4','3'])]
frequency_list = Counter(tuple(sorted(i)) for i in a[0])
print "bigram","frequency"
for key,val in frequency_list.items():
print key, val
输出如下
bigram frequency
('4', '7') 1
('4', '8') 1
('7', '8') 3
('3', '4') 3
('3', '8') 1
