Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取具有相应编号的最大频率项_Python_Text_Counter - Fatal编程技术网

Python 获取具有相应编号的最大频率项

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

我有一个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 = 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)}