Python 获取具有相应编号的最大频率项
我有一个ID列表,例如list1=[ID1,ID1,ID3,ID1,ID5,ID1],每个ID都有其相应的概率,例如list2=[0.9,0.92,0.8,0.91,0.7,0.9]。我想在列表1中获得最大频率项,并从列表2中获得相应概率的总和。例如 ID1:4(频率),3.63(总概率) ID3:1(频率),0.8(概率) ID5:1(频率),0.7(概率) 我可以从以下代码中获得频率:Python 获取具有相应编号的最大频率项,python,text,counter,Python,Text,Counter,我有一个ID列表,例如list1=[ID1,ID1,ID3,ID1,ID5,ID1],每个ID都有其相应的概率,例如list2=[0.9,0.92,0.8,0.91,0.7,0.9]。我想在列表1中获得最大频率项,并从列表2中获得相应概率的总和。例如 ID1:4(频率),3.63(总概率) ID3:1(频率),0.8(概率) ID5:1(频率),0.7(概率) 我可以从以下代码中获得频率: from collections import Counter counter_list = Counte
from collections import Counter
counter_list = Counter(list1)
print("Voting of each predicted class", counter_list)
上述代码导致:
[{ID1:4},{ID3:1},{ID5:1}]
它只返回频率,但我不知道如何连接第一个列表和第二个列表,或者在一个2D列表中损坏它们,并将第一项用于计数频率,第二项用于增加概率计数器。我是python新手,有人能帮我吗?因为您需要两个列表中的项目,而且每个项目在两个列表中的位置都相同,所以可以使用
for
和zip
函数同时在两个列表上迭代。例如:
for id_name, prob in zip(list1, list2):
print(list1, list2)
要保存计算重复次数和求和的结果,请使用字典,其中键是id,值是包含两个值的列表:第一个是id的计数,第二个是概率之和:
my_dict = {}
for id_name, prob in zip(list1, list2):
if id_name not in my_dict:
my_dict[id_name] = [0, 0]
my_dict[id_name][0] = my_dict[id_name][0] + 1
my_dict[id_name][1] = my_dict[id_name][1] + prob
最终结果是一个包含计数和总概率的dict。由于您需要两个列表中的项目,并且每个项目在两个列表中的位置相同,因此可以使用
for
和zip
函数同时在两个列表上迭代。例如:
for id_name, prob in zip(list1, list2):
print(list1, list2)
list1=['ID1', 'ID1', 'ID3', 'ID1', 'ID5', 'ID1']
list2=[0.9, 0.92, 0.8, 0.91, 0.7, 0.9]
d = {}
dict = {}
for x, y in zip(list1, list2):
d.setdefault(x, []).append(y) # {'ID1': [0.9, 0.92, 0.91, 0.9], 'ID3': [0.8], 'ID5': [0.7]}
dict[x] = (len(d[x]),sum(d[x])) # calculating frequency and probability for each key
print (dict)
要保存计算重复次数和求和的结果,请使用字典,其中键是id,值是包含两个值的列表:第一个是id的计数,第二个是概率之和:
my_dict = {}
for id_name, prob in zip(list1, list2):
if id_name not in my_dict:
my_dict[id_name] = [0, 0]
my_dict[id_name][0] = my_dict[id_name][0] + 1
my_dict[id_name][1] = my_dict[id_name][1] + prob
最终结果是一个包含计数和总概率的dict
list1=['ID1', 'ID1', 'ID3', 'ID1', 'ID5', 'ID1']
list2=[0.9, 0.92, 0.8, 0.91, 0.7, 0.9]
d = {}
dict = {}
for x, y in zip(list1, list2):
d.setdefault(x, []).append(y) # {'ID1': [0.9, 0.92, 0.91, 0.9], 'ID3': [0.8], 'ID5': [0.7]}
dict[x] = (len(d[x]),sum(d[x])) # calculating frequency and probability for each key
print (dict)
输出:
{'ID1': (4, 3.63), 'ID3': (1, 0.8), 'ID5': (1, 0.7)}
输出:
{'ID1': (4, 3.63), 'ID3': (1, 0.8), 'ID5': (1, 0.7)}