python - 列表列表的频率计数
问题描述
我有一个我想根据频率计数存储的列表列表。
a=[[list1],[list2],[list3],[list1]]
我所说的频率计数的意思是有效地创建具有唯一列表及其出现的可索引结构。
{
2: [list1]
1: [list2]
3: [list3]
}
例如,当涉及到单个列表时,我们有一个具有唯一键值对的字典。
a=[1,2,3,4,6,2,2,1,3,6]
dict1={}
for i in a:
if(i in dict1):
dict1[i]+=1
else:
dict1[i]=1
#output : {1: 2, 2: 3, 3: 2, 4: 1, 6: 2}
解决这个问题的最佳方法是什么。提前致谢。
解决方案
主要问题是我无法对列表进行哈希处理以存储频率计数。所以感谢 Patrick 在评论会话中的有用建议,我能够使用元组,因为它是一种可散列的类型。
a=[[1,2,3],[1,3,2],[1,2,3],[3,2,1]]
di=[]
for i in a:
i=tuple(i)
di.append(i)
print(di)
dict1={}
for i in di:
if(i in dict1):
dict1[i]+=1
else:
dict1[i]=1
print (dict1)
这不是一段雄辩的代码,但目前它有效。