つまり、タプル (field1、field2、field3、field4) は同時にキーと値である必要があります。この種の実装はPythonで可能ですか?
はい。あなたがこのようにすることを止めるものは何もありません:
key = ("f1", "f2", "f3", "f4", "f5")
value = ("f1", "f2", "f3", "f4", "f5")
d = {key: value}
私があなたを正しく理解していれば、あなたは今まで次のようなことをしてきました:
line_no = 1
d = {}
for line in open(FILE):
d[line_no] = line # line = ("f1", "f2", "f3", "f4")
line_no += 1
..?
そうでない場合は、どこが間違っているかを詳しく説明するか、ソースコードを投稿してください:)
編集:
わかりました、コメントをありがとう、私は今理解したと思います。私は次のようにします:
d = {}
for line in open(FILE):
d[line] = []
d[line].append(f5) # line = ("f1", "f2", "f3", "f4"), f5 = timestamp
そうすれば、タプル全体をキーとして使用し、同一の f1、f2、f3、f4 を持つレコードからタイムスタンプ (f5) を差し引くことができます。私には、SQLで行う方がはるかに簡単に思えます。
そうすれば、負荷が増加しても一定のルックアップ時間と線形時間が得られます。しかし、キーが自明でないサイズの場合、パフォーマンスが少し低下すると思います。
タイムスタンプを互いに抽出する方法について考えさせてください..
EDIT2:
はい、ペアの最初の要素のリストを作成できます: fl = [p[0] for p inpair]] そして、複数回出現する人を除外します:
このようなもの l2 = [l for l in fl if len(l) > 1]
しかし、それはあまり効率的ではないようです..