使用Riot的API,我正在开发一个应用程序,它分析一个传奇球员联盟的比赛历史数据。你知道吗
我有一个包含商品名称和购买时间(秒)的列表
item_list =
[['Boots of Speed', 50],
['Health Potion', 60],
['Health Potion', 80],
['Dorans Blade', 120],
['Dorans Ring', 180],
['Dorans Blade', 200],
['Dorans Ring', 210]]
我正在尝试将其转换为一个包含项目名称和平均购买时间的项目的唯一列表。你知道吗
在本例中,我希望将列表转换为:
['Boots of Speed', 50]
['Health Potion', 70]
['Dorans Blade', 160]
['Dorans Ring', 195]
我尝试的解决方案是创建一个空字典,遍历列表,将字典键设置为项目名称,将平均时间设置为键值。你知道吗
dict = {}
for item in item_list:
item_name = item[0]
time_of_purchase = item[1]
dict[item_name] = (dict[item_name] + time_of_purchase) / 2 # Would cast this as an integer
问题是,在初始化变量dict[item\u name]之前,我将尝试对它执行计算。你知道吗
在这一点上我有点卡住了。任何指点或帮助将不胜感激。你知道吗
我会先填写字典,对于每个
item_name
,我会有一个time_of_purchase
值的列表。一旦完成,我将遍历字典(键,列表)对,并计算每个列表的平均值。你知道吗丹尼尔的解决方案也是如此,以一种更具Python性和效率的方式。你知道吗
您可以使用setdefault:
或者从collections模块使用defaultdict:
输出
你的方法有两个问题,一个是你确定的问题,另一个是如果这个项目出现了三次,平均值计算不正确。要解决这一问题,一种方法是对时间求和,但也要分别记录出现的次数,然后计算平均值作为第二步。你知道吗
相关问题 更多 >
编程相关推荐