这意味着,元组 (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 中完成。
这样,随着负载的增加,您将拥有恒定的查找时间和线性时间。但我认为如果密钥大小不一,你会受到一些性能影响。
让我想想你如何从彼此中提取时间戳..
编辑2:
是的,您可以列出该对中的第一个元素: fl = [p[0] for p in pairs]] 然后过滤掉出现次数超过 1 的任何人:
像这样的东西 l2 = [l for l in fl if len(l) > 1]
但这似乎不是很有效..