【发布时间】:2012-08-06 13:07:35
【问题描述】:
我不知道标题是否恰当,但目前这是我的问题:
我在文本文件(有 2 列)中有以下格式的条目:
Name Time
Santa 1.2
Jim 2.5
Santa 2.7
Santa 2.9
我应该形成一个字典,其中名称为键,(时间,计数)为值。在上述名称中,圣诞老人重复了 3 次,连续出现的时间差小于 2 秒。因此,与该条目关联的 Count 值为 3。如果发生这种情况,则应从字典中删除该条目。否则,计数值应为零(如果圣诞老人的 2 次出现相隔 2 秒,而第 3 次出现在 2 秒后,则该条目的计数将重新初始化为零)。
可以这样实现:将 (Time, Count) 作为列表并将该列表作为键的值?我是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
【问题讨论】:
-
哦,这有点令人困惑。据我所知,字典中剩余的 all 条目的
count值将为零,那么为什么要首先存储它呢?time值应该在最终字典中吗? -
因为如果一个条目出现了 3 次且每次相隔不到 2 秒,则该条目将被删除。正是出于这个特殊目的,Time 用于比较同一条目的先前发生的实例。例如,如果一个条目的计数值为 2,并且在第二次出现 2 秒后发生了第三次,则删除该条目
-
退后一步,写一些明确的需求,甚至可能使用伪代码,以及您想要的示例案例。我很困惑,即使我能在一段时间后破译你想要的东西,但如果你能改进这个问题,对每个人来说都会更容易。谢谢:)
-
好的...我要编辑问题...
-
只是为了澄清。你想要一个名字列表。
["santa","jim"]并且您希望该列表仅包含满足以下要求的条目:该条目不得有 3 个动作,且彼此在 2 秒内?
标签: python python-3.x python-2.7