如何更新字典列表的值

2024-05-14 01:18:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将每个字典中每个键的值与每个列表中的值相加

D = [{1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 
10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 
10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 
10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}]
C = [[1, 2, 1], [1, 2, 1], [2, 1, 1], [3, 1, 1], [1, 1, 2], [1, 1, 2], [1, 2, 2], [1, 1, 1], [1, 2, 
2], [1, 1, 3], [2, 1, 2], [2, 1, 2], [2, 2, 1], [2, 2, 1], [2, 1, 1], [1, 3, 1]]

for c in C:
    for cdx in range(0, len(c)):
        key = cdx + 1
        value = c[cdx]
        for d in D:
            cu_val = d.get(key)
            up_val = cu_val + value
            d[key] = up_val
        print(D)

词典列表和列表的长度相等。是否要通过将字典值添加到相同对应位置的列表值来更新字典


Tags: keyin列表forgetlen字典value
3条回答

根据我对您问题的理解,以下代码应该可以做到这一点:

for c, d in zip(C, D):
    for idx, val in enumerate(c):
        d[idx+1] += val
print(D)

它起作用了

l1 = len(D) #number of dictionary
l2 = len(D[0]) # number of element of dictionary

for i in range(l1):
    for j in range(l2):
        D[i][j+1] += C[i][j]
        
print(D)

解决方案:
这应该可以解决您的目的:)

D = [{1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 
10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 
10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 
10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}, {1: 10, 2: 10, 3: 10}]

C = [[1, 2, 1], [1, 2, 1], [2, 1, 1], [3, 1, 1], [1, 1, 2], [1, 1, 2], [1, 2, 2], [1, 1, 1], [1, 2, 
2], [1, 1, 3], [2, 1, 2], [2, 1, 2], [2, 2, 1], [2, 2, 1], [2, 1, 1], [1, 3, 1]]

for d, c in zip(D, C):
    for key, val in d.items():
        d[key] = val + c.pop()

print(D)

输出:

[{1: 11, 2: 12, 3: 11}, {1: 11, 2: 12, 3: 11}, {1: 11, 2: 11, 3: 12}, {1: 11, 2: 11, 3: 13}, {1: 12, 2: 11, 3: 11}, {1: 12, 2: 11, 3: 11}, {1: 12, 2: 12, 3: 11}, {1: 11, 2: 11, 3: 11}, {1: 12, 2: 12, 3: 11}, {1: 13, 2: 11, 3: 11}, {1: 12, 2: 11, 3: 12}, {1: 12, 2: 11, 3: 12}, {1: 11, 2: 12, 3: 12}, {1: 11, 2: 12, 3: 12}, {1: 11, 2: 11, 3: 12}, {1: 11, 2: 13, 3: 11}]

相关问题 更多 >