如何在python中按升序排列文件中的数字

2024-05-23 22:05:14 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,如果这是文件。。。你知道吗

Batman, Bruce Wayne, high tech weapons, 70

Spiderman, Peter Parker, wrist web-shooter, 70

Superman, Clark Kent, superhuman strength, 99

Captain America, Steve Rogers, vibranium-steel shield, 71

Wonder Woman, Princess Diana, indestructible bracelets, 80

Iron Man, Tony Stark, powered armor suit, 85

Donald Knuth, Donald Knuth, computer science and mathematics, 100

Hulk, Robert Banner, superhuman strength, 90

He-Man, Prince Adam, superhuman strength, 92

Wolverine, Logan, retractable bone claws, 70

我被要求根据超级英雄的力量(每行末尾的数字)按升序打印行。。。你知道吗

帮帮我,伙计!!!你知道吗


Tags: 文件techstrengthpeterhighknuthspidermanbruce
3条回答
s = """Batman, Bruce Wayne, high tech weapons, 70
Spiderman, Peter Parker, wrist web-shooter, 70
Superman, Clark Kent, superhuman strength, 99
Captain America, Steve Rogers, vibranium-steel shield, 71
Wonder Woman, Princess Diana, indestructible bracelets, 80
Iron Man, Tony Stark, powered armor suit, 85
Donald Knuth, Donald Knuth, computer science and mathematics, 100
Hulk, Robert Banner, superhuman strength, 90
He-Man, Prince Adam, superhuman strength, 92
Wolverine, Logan, retractable bone claws, 70"""
ss = s
s = s.split('\n')
x = [e.split(',') for e in s]
x = sorted(x, key=lambda x:int(x[-1].strip()))
s = '\n'.join([','.join(e) for e in x])

给你

这是一个相当简单的问题,但需要几个步骤。搜索“如何将.txt文件加载到python中?”将引导您使用pandas模块,以及“如何按列对pandas数据帧进行排序?”将引导您使用sort\u values DataFrame方法。如果你自己找不到问题的答案,你应该把它分解成小块。关于如何执行这些步骤的答案已经在堆栈溢出的其他答案中提供。你知道吗

不过,为了仍然有用,以下是您将使用的方法。 我假设这些数据存储为.txt或.csv文件。你知道吗

使用pandas将数据读入数据帧,然后按幂列降序排序。您可以将数据帧输出为.csv、excel、.txt或任何您想要的文件类型。根据您想要的文件类型,对于该步骤的堆栈溢出有很多答案。你知道吗

import pandas as pd

df = pd.read_csv('sort_input.txt', delimiter=',', header=None,
                  names=['Alias','Name','Skill','Power'])
df.sort_values(['Power'], ascending=False, inplace=True)
print(df)

给出输出:

Donald Knuth, Donald Knuth, computer science and mathematics,100
Superman, Clark Kent, superhuman strength,99
He-Man, Prince Adam, superhuman strength,92
Hulk, Robert Banner, superhuman strength,90
Wonder Woman, Princess Diana, indestructible bracelets,80
Captain America, Steve Rogers, vibranium-steel shield,71
tman, Bruce Wayne, high tech weapons,70
Spiderman, Peter Parker, wrist web-shooter,70

发布答案:

s = u"""Batman, Bruce Wayne, high tech weapons, 70
Spiderman, Peter Parker, wrist web-shooter, 70
Superman, Clark Kent, superhuman strength, 99
Captain America, Steve Rogers, vibranium-steel shield, 71
Wonder Woman, Princess Diana, indestructible bracelets, 80
Iron Man, Tony Stark, powered armor suit, 85
Donald Knuth, Donald Knuth, computer science and mathematics, 100
Hulk, Robert Banner, superhuman strength, 90
He-Man, Prince Adam, superhuman strength, 92
Wolverine, Logan, retractable bone claws, 70"""

import io
import pandas as pd

df = pd.read_csv(io.StringIO(s),names=["Hero","Name","Special","Power"],skipinitialspace=True)
df.sort_values("Power",ascending=True, inplace=True)
df = df.reset_index(drop=True)

#df.to_dict(orient="r")
#df.to_csv("output.csv",index=False)

output = '\n'.join([', '.join([str(i) for i in row]) for row in df.values])
print(output)

相关问题 更多 >