1

同じ問題を抱えている人がいる複数のスレッドを見てきましたが、問題の固有の性質により、ケースバイケースで解決策が提供されているようです

これが私のコードです:

loga = [(912, "Message A1") , (1000, "Message A2") , (988, "Message A3") , (1012, "Message A4") , (1002, "Message A5")]
logb = [(926, "Message B1") , (1008, "Message B2") , (996, "Message B3") , (1019, "Message B4") , (1100, "Message B5")]
logc = [(1056,"Message C1") , (1033, "Message C2") , (999, "Message C3") , (1054, "Message C4") , (1086, "Message C5")]
logs = [loga, logb, logc]
out = []


def find_lowest_i(lst):
    for i in range(len(lst)):
        log = lst[i]
        if log:
            t = log[0][0]
            if i==0 or t < lowest_t:
                lowest_i = i
                lowest_t = t
    return lowest_i

while True:
    i = find_lowest_i(logs)
    print "i=", i
    tpl = logs[i].pop(0)
    print tpl
    out.append(tpl)
    print out

そして私の正確なエラー:

「メッセージ ファイル名 行位置 トレースバック 19 find_lowest_i 13
UnboundLocalError: 割り当て前に参照されたローカル変数 'lowest_t'」

4

1 に答える 1

1

継続的なpoping により、ログの 1 つ (このデータを含む最初のログ) は最終的に空になります。

logs = [[],
       [(1019, 'Message B4'), (1100, 'Message B5')],
       [(1056, 'Message C1'), (1033, 'Message C2'), (999, 'Message C3'),
        (1054, 'Message C4'), (1086, 'Message C5')]]

この状況でif logは、i=0 で失敗し、lowest_t初期化されません。次の反復、i=1 では、 はありますが、ありlogませんlowest_t。例外!

于 2012-06-22T02:12:44.963 に答える