Python字典-从其他值中查找值的平均值
我有以下清单Python字典-从其他值中查找值的平均值,python,dictionary,find,average,Python,Dictionary,Find,Average,我有以下清单 count = 3.5, price = 2500 count = 3, price = 400 count = 2, price = 3000 count = 3.5, price = 750 count = 2, price = 500 我想找出所有计数相同的地方的平均价格。例如: count = 2, price = 3000 count = 2, price = 500 3000 + 500 = 3500 3500/2 = 1750 “计数2”的平均值为1
count = 3.5, price = 2500
count = 3, price = 400
count = 2, price = 3000
count = 3.5, price = 750
count = 2, price = 500
我想找出所有计数相同的地方的平均价格。例如:
count = 2, price = 3000
count = 2, price = 500
3000 + 500 = 3500
3500/2 = 1750
“计数2”的平均值为1750
这是到目前为止我的代码
avg_list = [value["average"] for value in dictionary_database_list]
counter_obj = collections.Counter(count_list)
print ("AVG:")
for i in counter_obj:
print (i, counter_obj[i])
您需要迭代您的项目 avgdictionary.values可能是您想要的
我承认我不是100%清楚你在这里寻找什么,但我会试一试: 当您想要迭代一系列事物并积累关于同类事物的某种信息时,一个好的策略是使用哈希表。在Python中,对于需要哈希表的算法,我们通常使用dict 为了收集足够的信息以获得您列表中每种商品的平均价格,我们需要: a具有特定计数的项目总数 b具有特定计数的项目的总价 因此,让我们构建一个数据结构,将一个计数映射到一个dict,该dict包含项目总数和具有该计数的项目的总价 让我们以以下格式进行输入:
item_list = [
{'count': 3.5, 'price': 2500},
{'count': 3, 'price': 400},
{'count': 2, 'price': 3000},
{'count': 3.5, 'price': 750},
{'count': 2, 'price': 500},
]
现在,让我们在一个名为items\u by\u count的dict中映射有关总项目和总价格的信息:
但是等等!如果count不在dict中,items_by_count[count]将抛出一个键错误。这是一个很好的dict用例。让我们将以前从未见过的计数的默认值定义为0 total price和0 total items:
from collections import defaultdict
items_by_count = defaultdict(lambda: {
'total_items': 0,
'total_price': 0
})
现在,我们的代码不会在每次看到count的新值时抛出异常
最后,我们需要取平均值。让我们在另一个dict中获得我们需要的信息,将计数映射到平均价格。这是一个很好的用例:
这将逐项遍历dict,并创建我们想要的新dict
总而言之:
from collections import defaultdict
def get_average_price(item_list):
items_by_count = defaultdict(lambda: {
'total_items': 0,
'total_price': 0
})
for item in item_list:
count, price = item['count'], item['price']
items_by_count[count]['total_items'] += 1
items_by_count[count]['total_price'] += price
return {count: item['total_price'] / item['total_items']
for count, item in items_by_count.iteritems()}
如果传入示例输入dict,此函数将返回:
{3.5:1625,2:1750,3:400}
希望这是您想要的输出!注意不要在特定的Python版本中出现类似的问题。dictionary标记看起来是一个很好的开始。到目前为止,您尝试了什么?代码简单!再想一想你会做到的!!:如果有一个函数可以通过共享键对项目进行分组就好了!哦,等等,我能得到一个物体的计数。所以我能够计算出count=2出现的次数。但我不知道如何将其与价格进行比较。这是我想要的have@KernelPanic符合事实的但这归根结底是对数据进行排序,因为分组是groupby所做的,计算平均值是必须的。调用statistics.mean并不是很难,是吗?虽然这个链接可以回答这个问题,但最好在这里包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-我想我可以帮你在@phunsukwangdu发表评论后只发布一个方法,然后我也投了赞成票简单代码'。PD:我发布了python官方文档中的permalink。可能会发生变化,但删除了一个非常常见的方法…idtsI仍然对这个方法非常迷茫。。。不知道如何实现avgdictionary.values这正是我想要的,而且它工作得非常完美!!你真棒!
{count: item['total_price'] / item['total_items']
for count, item in items_by_count.iteritems()}
from collections import defaultdict
def get_average_price(item_list):
items_by_count = defaultdict(lambda: {
'total_items': 0,
'total_price': 0
})
for item in item_list:
count, price = item['count'], item['price']
items_by_count[count]['total_items'] += 1
items_by_count[count]['total_price'] += price
return {count: item['total_price'] / item['total_items']
for count, item in items_by_count.iteritems()}