条件更新字典

时间:2019-04-07 21:02:55

标签: python python-3.x dictionary while-loop

我正在编写一个给出字典的字典的代码,该字典看起来像这样:

D = {1: {2: 'a', 3: 'b'}, 10: {11: 'a', 12: 'b'}}

其中1和2是键,而内部字典{2:'a',3:'b'}和{11:'a',12:'b'}是在加上1或2之后的结果。 D [1] + 1 = 2和D [1] + 2 =3。“ a”和“ b”分别表示加1或2。

我想继续从D中将这些添加应用于其新产品,这可以通过以下操作获得:

products = list(set([l for x, y in D.items() for l, m in y.items()]))

products = [2,3,11,12]

我使用集合列表只是为了避免在D上已有的产品上应用附加内容。

因此,将加法应用到产品中的每个项目并将其添加到D中,结果将是这样:

D = {1: {2: 'a', 3: 'b'}, 10: {11: 'a', 12: 'b'}, 2: {3: 'a', 4: 'b'}, 3: {4: 'a', 5: 'b'}, 11: {12: 'a', 13: 'b'}, 12: {13: 'a', 14: 'b'}}

请注意新键及其新的内部字典(产品)

问题是,我希望在一段时间内继续使用新产品进行此操作,直到达到一定数量为止。

例如,下一次迭代的产品将是:

products = [3,4,5,12,13,14]

如果它们不在D中,则应使用它们来应用加法,因此可以很容易地通过以下方式完成:

for i in products:
    if i in D:
        products.remove(i)

这将导致我们:

products = [4,5,13,14] # 3 and 12 are already on D

所以我们应该对这些产品应用添加并将其添加到D

所以我想要实现这一点,必须有类似的东西:

D = {1: {2: 'a', 3: 'b'}, 10: {11: 'a', 12: 'b'}}
i = 0
while i < 4: # just an example of 4 number of iterations
    products = list(set([l for x, y in D.items() for l, m in y.items()]))
    for j in products:
        if j in D:
            products.remove(j)
    # apply additions
    # update D or use an auxiliary dict and them append to D



    i +=1

1 个答案:

答案 0 :(得分:0)

那里只有一个变量i

您将希望在内循环上使用for j, 以避免打扰外部循环。