python比较表中的字符串并返回最佳字符串
我有一个表,其中有3列由空格分隔python比较表中的字符串并返回最佳字符串,python,compare,Python,Compare,我有一个表,其中有3列由空格分隔 A1 3445 1 24 A1 3445 1 214 A2 3603 2 45 A2 3603 2 144 A0 3314 3 8 A0 3314 3 134 A0 3314 4 46 我想将最后一列与第一列中的ID(例如A1)进行比较,以返回数字最大的字符串。因此,最终结果将是这样的 A1 3445 1 214 A2 3603 2 144 A0 3314 3 134 我已经做了分割线,但我不知道如何比较线。 帮个忙就好了 dataDic = {}
A1 3445 1 24
A1 3445 1 214
A2 3603 2 45
A2 3603 2 144
A0 3314 3 8
A0 3314 3 134
A0 3314 4 46
我想将最后一列与第一列中的ID(例如A1)进行比较,以返回数字最大的字符串。因此,最终结果将是这样的
A1 3445 1 214
A2 3603 2 144
A0 3314 3 134
我已经做了分割线,但我不知道如何比较线。
帮个忙就好了
dataDic = {}
for data in open('1.txt').readlines():
id, a, b ,num = data.split(" ")
if not dataDic.has_key(id):
dataDic[id] = [a, b, int(num)]
else:
if int(num) >= dataDic[id][-1]:
dataDic[id] = [a, b, int(num)]
print dataDic
我想,也许这个结果就是你想要的。使用
排序
函数,将最后一列作为键
with open('a.txt', 'r') as a: # 'a.txt' is your file
table = []
for line in a:
table.append(line.split())
s = sorted(table, key=lambda x:int(x[-1]), reverse=True)
for r in s:
print '\t'.join(r)
结果:
A1 3445 1 214
A2 3603 2 144
A0 3314 3 134
A0 3314 4 46
A2 3603 2 45
A1 3445 1 24
A0 3314 3 8
输出为:
('A1', 3445, 1, 214)
('A2', 3603, 2, 144)
('A0', 3314, 3, 134)
您可以使用此函数。什么是“数据表”?我将“数据表”固定为一个表。它是一个数据帧、一个csv文件、一个嵌套列表……?只是一个空格分隔的文件。谢谢,但由于它不是排序,我不需要最后四行。您可以重新定义:
s=sorted(table,key=lambda x:int(x[-1]),reverse=True)[:3]
('A1', 3445, 1, 214)
('A2', 3603, 2, 144)
('A0', 3314, 3, 134)