我有一个字典,其键是整数,值是列表,因为每个键列表在每次迭代中都会更新。还添加了新密钥。但是在某些情况下,某些键值可能不会更新。
了解哪些键未更新的最有效方法是什么?
我可以迭代字典中的所有列表,并从长度上检查该列表是否已更新,但是有更好的方法吗?
注:整数键不是连续的数字。因此,使用简单的列表或数组似乎不是一个选择
答案 0 :(得分:2)
作为解决方案@Scott Skiles在注释中提出的替代方案,我将在列表旁边的字典中添加一个值,该值指定修改键时的最新迭代:
my_dict = {}
iteration_num = 0
while True:
updates_to_make = some_function_producing_2tuples()
# iterate through new additions, and add them to the list
for key, value in updates_to_make:
# the 'value' in my_dict is a 2-tuple (last_updated, list)
# we replace last_updated every time we change the key somehow
if key in my_dict:
my_dict[key][1].append(value)
my_dict[key][0] = iteration_num
else:
my_dict[key] = (iteration_num, [value])
...
iteration_num += 1
然后您可以通过应用过滤器来确定哪些键已更新或未更新:
updated_keys = [k for k, v in my_dict.items() if v[0] == iteration_num]