如何检查列表的更改

问题描述 投票:0回答:1

我正在尝试使用针对python的Google Calendar API,我想每隔五秒检查一次新的日历添加事件。我知道将它设置为一个旧列表,然后在它更新时再次比较它:

-main()是从Calendar检索数据的函数。 - Allevents是日历中的事件列表。它在main()中附加了事件 - 其他名字非常直观。

while 1 == 1:
     time.sleep(5)
     main()
     if first == 0:
         m = set(allevents) - set(oldevents)
         print(oldevents)
         if not m:
             print('nothing changed')
         else:
             print(m)
             print("--------------------------------------------------------")
     else:
         oldevents = allevents
         first = False
     oldevents = allevents
     allevents.clear()

当我运行它时,它第一次检索数据是完美的:输出allevents(用main()写的),没有别的。第二次是我还没有做任何更改,所以它输出alleventsoldevents(具有相同的值)以及nothing changed消息。

while循环第三次运行是我向日历添加事件的时间。从理论上讲,我希望它输出我因为改变而改变的事件

m = set(allevents) - set(oldevents)
print(oldevents)
     if not m:
         print('nothing changed')
     else:
         print(m)
         print("--------------------------------------------------------")

然而,它遵循if not m:并输出alleventsoldevents与相同的值和我添加的新事件和nothing changed消息。

旁注:当我在下一个循环中删除该事件时,两个列表也会删除该事件。

四个循环(为了演示目的进行了一些修改):

Getting the upcoming 10 events
['5kt8vb1m5tad2h6higtd8seqp9']

Getting the upcoming 10 events
['5kt8vb1m5tad2h6higtd8seqp9']
['5kt8vb1m5tad2h6higtd8seqp9']
nothing changed

Getting the upcoming 10 events
['7p4hs2ribddnl5h13erv5c1rir', '5kt8vb1m5tad2h6higtd8seqp9']
['7p4hs2ribddnl5h13erv5c1rir', '5kt8vb1m5tad2h6higtd8seqp9']
nothing changed

Getting the upcoming 10 events
['5kt8vb1m5tad2h6higtd8seqp9']
['5kt8vb1m5tad2h6higtd8seqp9']
nothing changed

如果您认为有必要使用更多代码,请告诉我,我将发布整个代码。

python google-api-client python-datetime
1个回答
0
投票

在你的代码中“first = False”首先设置为零。所以它在下一次迭代中进入if循环。移除“first = False”并尝试

© www.soinside.com 2019 - 2024. All rights reserved.