字典中的哪些键值未更新?

时间:2019-10-27 00:51:25

标签: python

我有一个字典,其键是整数,值是列表,因为每个键列表在每次迭代中都会更新。还添加了新密钥。但是在某些情况下,某些键值可能不会更新。

了解哪些键未更新的最有效方法是什么?

我可以迭代字典中的所有列表,并从长度上检查该列表是否已更新,但是有更好的方法吗?

注:整数键不是连续的数字。因此,使用简单的列表或数组似乎不是一个选择

1 个答案:

答案 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]