Python 基于列表列表的第一个元素的平均值
输入是击球手的跑步列表。它应该返回击球手平均得分最高的国家 我试图找到最高的平均值,例如,当下面的列表被传递给我的方法时,它应该返回“巴基斯坦” 我试过: 创建两个词典:Python 基于列表列表的第一个元素的平均值,python,list,dictionary,logic,Python,List,Dictionary,Logic,输入是击球手的跑步列表。它应该返回击球手平均得分最高的国家 我试图找到最高的平均值,例如,当下面的列表被传递给我的方法时,它应该返回“巴基斯坦” 我试过: 创建两个词典: total={'Australia': 31, 'India': 96, 'Pakistan': 231} division={'Australia': 1, 'India': 2, 'Pakistan': 3} 想把两个格言的值分开,找出其中最高的一个 还有其他有效的方法吗 感谢您的帮助。您可以使用以下代码实现此目的
total={'Australia': 31, 'India': 96, 'Pakistan': 231}
division={'Australia': 1, 'India': 2, 'Pakistan': 3}
想把两个格言的值分开,找出其中最高的一个
还有其他有效的方法吗
感谢您的帮助。您可以使用以下代码实现此目的:
import pandas as pd
data = [
["Pakistan", 23],
["Pakistan", 127],
["India", 3],
["India", 71],
["Australia", 31],
["India", 22],
["Pakistan", 81]
]
df = pd.DataFrame(data, columns=['country', 'count'])
grouped = df.groupby(['country']).mean().reset_index()
highest = list(grouped.max())
print(highest)
打印:
['Pakistan', '77']
为了实现这一点,您可以使用以下代码:
import pandas as pd
data = [
["Pakistan", 23],
["Pakistan", 127],
["India", 3],
["India", 71],
["Australia", 31],
["India", 22],
["Pakistan", 81]
]
df = pd.DataFrame(data, columns=['country', 'count'])
grouped = df.groupby(['country']).mean().reset_index()
highest = list(grouped.max())
print(highest)
打印:
['Pakistan', '77']
也许可以用更少的代码行来完成,但这是可行的
def average(data):
highest = {}
index = 0
while True:
for i in data:
if i[0] in highest:
highest[i[0]].append(i[1])
else:
highest[i[0]] = [i[1]]
for i in highest:
highest[i] = sum(highest[i]) / len(highest[i])
answer = 0
for i in highest:
if highest[i] >= answer:
answer = i
return answer
print average(data)
也许可以用更少的代码行来完成,但这是可行的
def average(data):
highest = {}
index = 0
while True:
for i in data:
if i[0] in highest:
highest[i[0]].append(i[1])
else:
highest[i[0]] = [i[1]]
for i in highest:
highest[i] = sum(highest[i]) / len(highest[i])
answer = 0
for i in highest:
if highest[i] >= answer:
answer = i
return answer
print average(data)
您可以创建一个以国家名称为关键字、以国家计数和分数列表为值的词典。然后,您可以进一步修改用于计算平均值的同一词典,并使用max打印具有最大平均值的国家/地区 代码如下:
>>> a = [
["Pakistan", 23],
["Pakistan", 127],
["India", 3],
["India", 71],
["Australia", 31],
["India", 22],
["Pakistan", 81]
]
>>>
>>>
>>> a
[['Pakistan', 23], ['Pakistan', 127], ['India', 3], ['India', 71], ['Australia', 31], ['India', 22], ['Pakistan', 81]]
>>> d = {}
>>> for l in a:
if l[0] not in d.keys():
d.update({l[0]:[1,l[1]]})
else:
d[l[0]] = [d[l[0]][0]+1,d[l[0]][1]+l[1]]
>>> #updated list
>>> d
{'Pakistan': [3, 231], 'Australia': [1, 31], 'India': [3, 96]}
>>> for key,val in d.items():
d[key] = val[1]/val[0]
#Updated dict with average per country
>>> d
{'Pakistan': 77.0, 'Australia': 31.0, 'India': 32.0}
>>> max(d.items())
('Pakistan', 77.0)
>>>
可能有更简单、更通俗的方法,但这就是逻辑所在。您可以创建一个以国家名称为键、以国家计数和分数为值的词典。然后,您可以进一步修改用于计算平均值的同一词典,并使用max打印具有最大平均值的国家/地区 代码如下:
>>> a = [
["Pakistan", 23],
["Pakistan", 127],
["India", 3],
["India", 71],
["Australia", 31],
["India", 22],
["Pakistan", 81]
]
>>>
>>>
>>> a
[['Pakistan', 23], ['Pakistan', 127], ['India', 3], ['India', 71], ['Australia', 31], ['India', 22], ['Pakistan', 81]]
>>> d = {}
>>> for l in a:
if l[0] not in d.keys():
d.update({l[0]:[1,l[1]]})
else:
d[l[0]] = [d[l[0]][0]+1,d[l[0]][1]+l[1]]
>>> #updated list
>>> d
{'Pakistan': [3, 231], 'Australia': [1, 31], 'India': [3, 96]}
>>> for key,val in d.items():
d[key] = val[1]/val[0]
#Updated dict with average per country
>>> d
{'Pakistan': 77.0, 'Australia': 31.0, 'India': 32.0}
>>> max(d.items())
('Pakistan', 77.0)
>>>
可能有更简单、更具python风格的方法,但这就是逻辑所在。Thia是另一种方法:
lst = [
["Pakistan", 23],
["Pakistan", 127],
["India", 3],
["India", 71],
["Australia", 31],
["India", 22],
["Pakistan", 81]
]
tuples = [tuple(i) for i in lst]
newdata = {}
for k,v in tuples:
newdata.setdefault(k, []).append(v)
result = {k:(sum(v)/len(v)) for k,v in newdata.items()}
a = max(result)
b = max(result.values())
print "The highest average is %s: %s " % (a,b)
输出:
平均值最高的是巴基斯坦:77
这是另一种方式:
lst = [
["Pakistan", 23],
["Pakistan", 127],
["India", 3],
["India", 71],
["Australia", 31],
["India", 22],
["Pakistan", 81]
]
tuples = [tuple(i) for i in lst]
newdata = {}
for k,v in tuples:
newdata.setdefault(k, []).append(v)
result = {k:(sum(v)/len(v)) for k,v in newdata.items()}
a = max(result)
b = max(result.values())
print "The highest average is %s: %s " % (a,b)
输出:
巴基斯坦的平均值最高:77