升序python文本
我有一个简单的问题,我创建了游戏,最后我把分数附加到文本文件中。现在我在这个文件中有类似的内容:升序python文本,python,Python,我有一个简单的问题,我创建了游戏,最后我把分数附加到文本文件中。现在我在这个文件中有类似的内容: John: 11 Mike: 5 John: 78 John: 3 Steve: 30 我想给用户的可能性,阅读前3名的分数。现在我创建了这个: with open(r'C:/path/to/scores.txt', 'r') as f: for line in f: data = line.split() p
John: 11
Mike: 5
John: 78
John: 3
Steve: 30
我想给用户的可能性,阅读前3名的分数。现在我创建了这个:
with open(r'C:/path/to/scores.txt', 'r') as f:
for line in f:
data = line.split()
print '{0[0]:<15}{0[1]:<15}'.format(data)
它看起来更好,但我如何才能显示只有三个位置和最高第一等最佳结果
诸如此类:
1. John: 78
2. Steve: 30
3. John: 11
根据您可能希望对数据执行的其他操作,我认为
pandas
是一个很好的选择。您可以将其加载到pandas
中,如下所示:
import pandas as pd
df = []
with open(r'C:/path/to/scores.txt', 'r') as f:
for line in f:
data = line.split()
df.append({'Name': data[0], 'Score': data[1]})
df = pd.DataFrame(df)
然后你可以按分数排序并显示前三名
df.sort('Score', ascending=False)[:3]
我建议阅读所有的熊猫,看看它能做什么
编辑:为了便于阅读,您可以执行以下操作
df = pd.read_table('C:/path/to/scores.txt')
但这将要求您首先在该文件中放置列标题,这取决于您可能希望对数据执行的其他操作,我认为
pandas
是一个很好的选择。您可以将其加载到pandas
中,如下所示:
import pandas as pd
df = []
with open(r'C:/path/to/scores.txt', 'r') as f:
for line in f:
data = line.split()
df.append({'Name': data[0], 'Score': data[1]})
df = pd.DataFrame(df)
然后你可以按分数排序并显示前三名
df.sort('Score', ascending=False)[:3]
我建议阅读所有的熊猫,看看它能做什么
编辑:为了便于阅读,您可以执行以下操作
df = pd.read_table('C:/path/to/scores.txt')
但这将要求您首先在该文件中放置列标题,这取决于您可能希望对数据执行的其他操作,我认为
pandas
是一个很好的选择。您可以将其加载到pandas
中,如下所示:
import pandas as pd
df = []
with open(r'C:/path/to/scores.txt', 'r') as f:
for line in f:
data = line.split()
df.append({'Name': data[0], 'Score': data[1]})
df = pd.DataFrame(df)
然后你可以按分数排序并显示前三名
df.sort('Score', ascending=False)[:3]
我建议阅读所有的熊猫,看看它能做什么
编辑:为了便于阅读,您可以执行以下操作
df = pd.read_table('C:/path/to/scores.txt')
但这将要求您首先在该文件中放置列标题,这取决于您可能希望对数据执行的其他操作,我认为
pandas
是一个很好的选择。您可以将其加载到pandas
中,如下所示:
import pandas as pd
df = []
with open(r'C:/path/to/scores.txt', 'r') as f:
for line in f:
data = line.split()
df.append({'Name': data[0], 'Score': data[1]})
df = pd.DataFrame(df)
然后你可以按分数排序并显示前三名
df.sort('Score', ascending=False)[:3]
我建议阅读所有的熊猫,看看它能做什么
编辑:为了便于阅读,您可以执行以下操作
df = pd.read_table('C:/path/to/scores.txt')
但这将要求您首先在该文件中放置列标题,如中所示,答案可仅用于排序;对结果进行切片,只得到三个最高分是微不足道的
也就是说,在这种情况下,您还可以切换到使用oversorted
;它需要一个键
功能,就像排序
,与排序
不同,它只使用内存来存储前X个项目(当要提取的集合较大且要保留的项目数较少时,理论性能更好)。除了不需要reverse=True
(因为选择nlargest
已经可以了),heapq.nlargest
是那种情况下排序的的替代品。与中一样,答案可以直接使用sorted
;对结果进行切片,只得到三个最高分是微不足道的
也就是说,在这种情况下,您还可以切换到使用oversorted
;它需要一个键
功能,就像排序
,与排序
不同,它只使用内存来存储前X个项目(当要提取的集合较大且要保留的项目数较少时,理论性能更好)。除了不需要reverse=True
(因为选择nlargest
已经可以了),heapq.nlargest
是那种情况下排序的的替代品。与中一样,答案可以直接使用sorted
;对结果进行切片,只得到三个最高分是微不足道的
也就是说,在这种情况下,您还可以切换到使用oversorted
;它需要一个键
功能,就像排序
,与排序
不同,它只使用内存来存储前X个项目(当要提取的集合较大且要保留的项目数较少时,理论性能更好)。除了不需要reverse=True
(因为选择nlargest
已经可以了),heapq.nlargest
是那种情况下排序的的替代品。与中一样,答案可以直接使用sorted
;对结果进行切片,只得到三个最高分是微不足道的
也就是说,在这种情况下,您还可以切换到使用oversorted
;它需要一个键
功能,就像排序
,与排序
不同,它只使用内存来存储前X个项目(当要提取的集合较大且要保留的项目数较少时,理论性能更好)。除了不需要reverse=True
(因为选择nlargest
已经做到了这一点),heapq.nlargest
是那种情况下排序的的替代品。您可以稍微编辑代码,将分数存储在列表中,然后使用sorted
功能对它们进行排序。然后,您可以只取排序列表的前三个分数
with open(r'doc.txt', 'r') as f:
scores = []
for line in f:
data = line.split()
scores.append(data)
top3 = sorted(scores, key = lambda x: int(x[1]), reverse=True)[:3]
for score in top3:
print '{0[0]:<15}{0[1]:<15}'.format(score)
打开(r'doc.txt',r')作为f的:
分数=[]
对于f中的行:
data=line.split()
分数。附加(数据)
top3=排序(分数,key=lambda x:int(x[1]),reverse=True)[:3]
排名前三的分数:
打印“{0[0]:您可以稍微编辑代码,将分数存储在列表中,然后使用排序功能对它们进行排序。然后您可以只获取排序列表的前三个分数
with open(r'doc.txt', 'r') as f:
scores = []
for line in f:
data = line.split()
scores.append(data)
top3 = sorted(scores, key = lambda x: int(x[1]), reverse=True)[:3]
for score in top3:
print '{0[0]:<15}{0[1]:<15}'.format(score)
打开(r'doc.txt',r')作为f的:
分数=[]
对于f中的行:
data=line.split()
分数。附加(数据)
top3=排序(分数,key=lambda x:int(x[1]),reverse=True)[:3]
排名前三的分数:
打印“{0[0]:您可以稍微编辑代码,将分数存储在列表中,然后使用