我不知道标题是否合适,但目前这是我的问题:
我在文本文件中有条目(有2列),格式如下:
Name Time
Santa 1.2
Jim 2.5
Santa 2.7
Santa 2.9
我应该形成一个以Name作为键的字典,(Time,Count)作为值。在上面的名称中,Santa重复3次,连续出现的时间差小于2秒。因此,与该条目关联的Count值为3.如果发生这种情况,则应从字典中删除该条目。否则,计数值应该为零(如果圣诞老人的2次发生相隔2秒,第2次发生在2秒之后,那么对于该条目,计数重新初始化为零)。
这可以像这样实现:将(时间,计数)作为列表并将该列表作为键的值吗?我是Python的新手,请原谅任何错误。
伪代码是这样的:
Read line in the file:
if Santa is in dictionary:
time_difference = time from column 2 of the line - dictionary[Santa]
if(time_difference < 2):
Replace the old occurance with new one along with time
# If the previous count value associated with Santa = 1, add 1 to make it 2
Make the Count associated with Santa = count+1
if(count associated with Santa = 3):
delete the Santa entry
else:
Make count associated with Santa = 1
else:
Add Santa to dictionary along with its time and make associated count = 1
答案 0 :(得分:1)
编辑:我刚刚注意到您想在2秒钟不活动后重启计时计时器,我会暂时发布该修复程序。
EDIT2:好吧,我添加了它。应该好好去!
不是最干净的代码,但它完成了工作。
class dictholder():
def __init__(self):
self.dict = {}
def add(self, name, time):
if name in self.dict:
if (abs(time) - abs(self.dict[name][0]) < 2):
self.dict[name][1] += 1
self.dict[name][0] = time
if self.dict[name][1] == 3:
del self.dict[name]
else:
self.dict[name] = [time, 1]
for item in self.dict:
if (abs(time) - abs(self.dict[item][0]) > 2):
self.dict[item][1] = 1
def get(self):
return self.dict
示例:
d = dictholder()
d.add("Santa", 1.2)
d.add("Jim", 2.5)
d.add("Santa", 2.7)
d.add("Santa", 2.9)
print d.get()
>>>
{'Jim': [2.5, 1]}
>>>