-1

我正在对 csv 文件进行一些过滤,其中每个标题都有许多具有不同预测值的重复 ID,因此第 2 列(pythoniac)是不同的。我只想保留 30 个最低值但具有唯一 ID。我来到了这段代码,但我不知道如何保留最低 30 个条目。

您能否提供有关如何通过 ID 获得 30 个唯一条目的建议?

# title1    id1 100 7.78E-25 # example of the line

with open("test.txt") as fi:
    cmp = {}
    for R in csv.reader(fi, delimiter='\t'):
        for L in ligands:
            newR = R[0], R[1]
            if R[0] == L:
                if (int(R[2]) <= int(1000) and int(R[2]) != int(0) and float(R[3]) < float("1.0e-10")):
                    if newR in cmp:
                        if float(cmp[newR][3]) > float(R[3]):
                            cmp[newR] = R[:-2]
                    else:
                        cmp[newR] = R[:-2]
4

1 回答 1

0

也许沿着这条线尝试一些东西......

from bisect import insort

nth_lowest = [very_high_value] * 30

for x in my_loop:
    do_stuff()
    ...
    if x < nth_lowest[-1]:
        insort(nth_lowest, x)
        nth_lowest.pop() # remove the highest element
于 2013-07-28T21:08:04.800 回答