python比较表中的字符串并返回最佳字符串

2024-09-27 07:34:03 发布

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

我有一个表,其中有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

我已经做了分割线,但我不知道如何比较线。 帮个忙就好了。你知道吗


Tags: 字符串ida2a1数字a0空格分割线
3条回答
data = [('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)]

from itertools import groupby
for  key, group in groupby(data, lambda x: x[0]):
    print sorted(group, key=lambda x: x[-1], reverse=True)[0]

输出为:

('A1', 3445, 1, 214)
('A2', 3603, 2, 144)
('A0', 3314, 3, 134)

您可以使用这个函数groupby。你知道吗

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 

我想,也许这个结果就是你想要的。你知道吗

使用sorted函数,将最后一列作为键

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

相关问题 更多 >

    热门问题