【发布时间】:2022-01-25 04:21:20
【问题描述】:
# Trying to Update a multi-dimensional dictionary using a multi-dimensional dictionary
# Iterate through existing dictionary with entries to create new multi-dimensional structured dictionaries
for entry_index, entry_data in entries.items():
#print(f"Entry[{entry_index}]: {entry_data}")
client_id = int(entry_data['CLIENT_ID'])
matter_id = int(entry_data['MATTER_ID'])
ref_num = entry_data['REF_NUM']
tk_id = entry_data['TK_ID']
date = entry_data['DATE'].strftime('%m-%d-%y')
update_hierarchy = {
client_id:{
matter_id:{
ref_num:{
tk_id:{
date:{
entry_index:{
'PHASE_TASK': entry_data['PHASE_TASK'],
'ACTIVITY': entry_data['ACTIVITY'],
'RATE': entry_data['RATE'],
'HOURS': float(entry_data['HOURS']),
'AMOUNT': entry_data['AMOUNT'],
'DESCRIPTION': entry_data['DESCRIPTION'],
'HOLD': entry_data['HOLD']
}
}
}
}
}
}
}
entries_hierarchy.update(update_hierarchy)
# Expected behavior: Each nested key will be updated given nested dict structure...ie.
# Expected Output:
'''
800:
50:
24:
12:
12.21.21:
0:
'Phase Task': Value,
'Activity': Value,
'Rate': Value,
'Hours': Value,
'Amount': Value,
'Description': Value,
'Hold': Value
1:
'Phase Task': Value,
'Activity': Value,
'Rate': Value,
'Hours': Value,
'Amount': Value,
'Description': Value,
'Hold': Value
51:
24:
12:
12.21.21:
2:
'Phase Task': Value,
'Activity': Value,
'Rate': Value,
'Hours': Value,
'Amount': Value,
'Description': Value,
'Hold': Value
3:
'Phase Task': Value,
'Activity': Value,
'Rate': Value,
'Hours': Value,
'Amount': Value,
'Description': Value,
'Hold': Value
'''
# Actual Result
'''
800:
50:
24:
12:
12.21.21:
0:
'Phase Task': Value,
'Activity': Value,
'Rate': Value,
'Hours': Value,
'Amount': Value,
'Description': Value,
'Hold': Value
1:
'Phase Task': Value,
'Activity': Value,
'Rate': Value,
'Hours': Value,
'Amount': Value,
'Description': Value,
'Hold': Value
'''
update_clients = {
client_id: {
entry_index: {
'MATTER_ID': matter_id,
'REF_NUM': ref_num,
'TK_ID': tk_id,
'DATE': date,
'PHASE_TASK': entry_data['PHASE_TASK'],
'ACTIVITY': entry_data['ACTIVITY'],
'RATE': entry_data['RATE'],
'HOURS': float(entry_data['HOURS']),
'AMOUNT': entry_data['AMOUNT'],
'DESCRIPTION': entry_data['DESCRIPTION'],
'HOLD': entry_data['HOLD']
}
}
}
entries_clients.update(update_clients)
entries_clients.update(update_clients) 最终每个客户端 ID 仅包含 1 个条目,并且预期行为是 update() 在 client_id 键下插入一个新的 entry_id 键(如果它不存在)
似乎Update() 只会更新字典中的第一个键并忽略嵌套键...我来自 PHP,发现在 Python 中使用数组并不那么直观。
我发现的其他问题只涉及单个嵌套字典,而不是多级字典。
【问题讨论】:
-
提问时最好只发布说明问题所需的最少代码(即minimal reproducible example)。
-
这个帖子可能对你有帮助:stackoverflow.com/questions/3232943/…
-
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
标签: python dictionary nested