Skip to main content
 首页 » 编程设计

python之元组列表的频率

2025年05月04日13虾米哥

我有一个列表:

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