Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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 - Fatal编程技术网

Python 元组列表中的多数及其平均值

Python 元组列表中的多数及其平均值,python,Python,假设以下元组列表表示3种不同方法的情绪估计: [('pos', 0.2), ('neu', 0.1), ('pos', 0.4)] 我想知道找到多数人情绪最有效的方法是什么,并以此计算其平均值,即: result=('pos', 0.3) 谢谢 您可以首先根据情绪进行分组(注意,需要先对它们进行排序) 然后找出最常见的情绪(aka拥有最长的群体) 最后计算平均值 values = [i[1] for i in majority] average = (majority[0][0], sum(

假设以下元组列表表示3种不同方法的情绪估计:

[('pos', 0.2), ('neu', 0.1), ('pos', 0.4)]
我想知道找到多数人情绪最有效的方法是什么,并以此计算其平均值,即:

result=('pos', 0.3)
谢谢

您可以首先根据情绪进行分组(注意,需要先对它们进行排序)

然后找出最常见的情绪(aka拥有最长的群体)

最后计算平均值

values = [i[1] for i in majority]
average = (majority[0][0], sum(values)/len(values))
# average = ('pos', 0.30000000000000004)
您可以首先根据情绪进行分组(注意,需要先对它们进行排序)

然后找出最常见的情绪(aka拥有最长的群体)

最后计算平均值

values = [i[1] for i in majority]
average = (majority[0][0], sum(values)/len(values))
# average = ('pos', 0.30000000000000004)

最好用字典。定义一个嵌套字典,其中“key”是情感名称,value是一个字典,其中包含:“numbers”(key),它是情感值(value)的列表,而“count”(key)是情感出现的次数(value)。例如:

sentiment['pos']['numbers'] = [0.2,0.4]
sentiment['pos']['count'] = 2
sentiment={'pos':{'numbers':[0.2,0.4],'count':2},'neu':{'numbers':`[0.1],'count:1'}}`

最好用字典。定义一个嵌套字典,其中“key”是情感名称,value是一个字典,其中包含:“numbers”(key),它是情感值(value)的列表,而“count”(key)是情感出现的次数(value)。例如:

sentiment['pos']['numbers'] = [0.2,0.4]
sentiment['pos']['count'] = 2
sentiment={'pos':{'numbers':[0.2,0.4],'count':2},'neu':{'numbers':`[0.1],'count:1'}}`
使用和模块,您可以执行以下操作:

from collections import Counter
from statistics import mean

lst = [('pos', 0.2), ('neu', 0.1), ('pos', 0.4)]
count = Counter(item[0] for item in lst)  # Counter({'pos': 2, 'neu': 1})
maj = count.most_common(1)[0][0]          # pos
mn = mean(item[1] for item in lst if item[0] == maj)
result = (maj, mn)

print(result)  # ('pos', 0.30000000000000004)
尽管您希望提高效率,但我更喜欢。

使用模块,您可以做到这一点:

from collections import Counter
from statistics import mean

lst = [('pos', 0.2), ('neu', 0.1), ('pos', 0.4)]
count = Counter(item[0] for item in lst)  # Counter({'pos': 2, 'neu': 1})
maj = count.most_common(1)[0][0]          # pos
mn = mean(item[1] for item in lst if item[0] == maj)
result = (maj, mn)

print(result)  # ('pos', 0.30000000000000004)
虽然考虑到你在追求效率,我还是更喜欢

这样就可以了


应该可以。

你能用NumPy或Pandas吗?你想用什么方式来提高效率?有效利用CPU时间、内存或开发人员时间?CPU时间。这些情绪来自每秒数千次的API调用。谢谢你使用NumPy或Pandas?你希望它以什么方式高效?有效利用CPU时间、内存或开发人员时间?CPU时间。这些情绪来自每秒数千次的API调用。感谢使用
l
,因为变量名是导致癌症的主要原因。谢谢你-我想知道,如果按照,但显然不是。使用
l
作为变量名是导致癌症的主要原因。谢谢你-我想知道这样的解决方案是否会对这种情况造成过度伤害,但显然不是。尝试将
'neu'
改为
'zeu'
。这打破了它。谢谢-这是非常全面的改变
'neu'
'zeu'
。这就打破了它。谢谢-这是非常全面的。它只从大多数中找到一个项目,而不计算其平均值。另外
sorted(my_tuple_list,key=lambda x:x[-1],reverse=True)[1]
返回其他“pos”元素这只从多数中查找一个项目,不计算其平均值。另外
sorted(my\u tuple\u list,key=lambda x:x[-1],reverse=True)[1]
返回另一个“pos”元素
from collections import Counter
from statistics import mean

lst = [('pos', 0.2), ('neu', 0.1), ('pos', 0.4)]
count = Counter(item[0] for item in lst)  # Counter({'pos': 2, 'neu': 1})
maj = count.most_common(1)[0][0]          # pos
mn = mean(item[1] for item in lst if item[0] == maj)
result = (maj, mn)

print(result)  # ('pos', 0.30000000000000004)
sorted_tuples = sorted(my_tuple_list, key = lambda x : x[-1] , reverse = True)

majority_sentiment=  sorted_tuples[0][0]
majority_sentiment_score = 0
num_items = 0

for sentiment_tup in sorted_tuples:
    if sentiment_tup[0] == majority_sentiment:
        majority_sentiment_score+= sentiment_tup[1]
        num_items +=1

avg_sentiment_score = majority_sentiment_score/num_items

result= (majority_sentiment,avg_sentiment_score)