gpt4 book ai didi

python - 根据某些条件更新嵌套字典

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:52 25 4
gpt4 key购买 nike

我有下表

table = {}
table["A"] = {0: {"B":2, "C1":2}, 1: {"C1":1}}
table["B"] = {0: {"C":1}, 1: {"C2":1}}
table["C"] = {0: {"C1":1}, 1: {"C2":1}}

并且想要将以下值添加到相应的键

c1 = {0:{"B":1}}    #This is for row "A"
c2 = {1:{"C":1}} #This is for row "B"
c3 = {1:{"C2":1}} #This is for row "C"

我想在表中插入 c1、c2 和 c3,这样对于 A,将根据 0 或 1 检查键。如果键存在于表中,我需要查看值并检查对于键 1 的值内的 B。如果 B 存在,我需要增加该值。否则 {"B":1} 将被添加到 0 或 1(基于键)

我尝试了多种技术,但总是出现错误消息或相应的值未更新。

结果表应该是

 table["A"] = {0: {"B":**3**, "C1":2},   1: {"C1":1}}
table["B"] = {0: {"C":1}, 1: {"C2":1}, **{"C":1}**}
table["C"] = {0: {"C1":1}, 1: {"C2":**2**}}

更新:虽然 @RomanPerekhrest 提供的解决方案有效,但当我尝试进行这些更改时,我收到了错误消息。

## to create the c1, c2, c3 etc from the list, I added this code. 
tr = ["A",0,"B",1,"C",1,"C2",1]
transition = {}
for i in range(1,len(tr)-2,2):
transition[i] = {tr[i]:{tr[i+1]:1}}
## instead of the c1, c2 and c3 i want to use the transition
##c1 = {1:{"B":1}}
##c2 = {1:{"C":1}}
##c3 = {1:{"C2":1}}

##for k,d in zip(table.keys(), [c1,c2,c3]): this is working correctly.

for k,d in zip(table.keys(), transition): ##the transition is generating error message for c_k,c_v in d.items():AttributeError: 'int' object has no attribute 'items'
for c_k,c_v in d.items():
if c_k in table[k]:
for inner_k in c_v:
if table[k][c_k].get(inner_k):
table[k][c_k][inner_k] += c_v[inner_k]
else:
table[k][c_k][inner_k] = c_v[inner_k]
print(table)

最佳答案

直接的方式:

table = {}
table["A"] = {0: {"B":2, "C1":2}, 1: {"C1":1}}
table["B"] = {0: {"C":1}, 1: {"C2":1}}
table["C"] = {0: {"C1":1}, 1: {"C2":1}}

c1 = {0:{"B":1}}
c2 = {1:{"C":1}}
c3 = {1:{"C2":1}}

for k,d in zip(table.keys(), [c1,c2,c3]):
for c_k,c_v in d.items():
if c_k in table[k]:
for inner_k in c_v:
if table[k][c_k].get(inner_k):
table[k][c_k][inner_k] += c_v[inner_k]
else:
table[k][c_k][inner_k] = c_v[inner_k]

print(table)

输出:

{'A': {0: {'B': 3, 'C1': 2}, 1: {'C1': 1}}, 'B': {0: {'C': 1}, 1: {'C2': 1, 'C': 1}}, 'C': {0: {'C1': 1}, 1: {'C2': 2}}}

关于python - 根据某些条件更新嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47033400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com