【发布时间】:2021-11-08 06:39:57
【问题描述】:
Python 新手,有工作代码,但希望了解是否有更好的方法。
问题陈述 - 一个 python 字典包含有关卷的详细信息,第二个包含有关卷快照的详细信息。生成一个以每个卷为键的 json 文档,如果该卷有快照,则将快照字典对象添加为相应卷的 Snapshots 键下的嵌套字典。如果卷没有任何快照,只需在相应卷的 Snapshots 键下附加一个空对象作为嵌套字典即可。
- 有没有更 Pythonic 的方式来解决这个挑战(也许是理解)?
- 我更新原始字典是否出错?
import json
volume_dict = {
"vol-04f": {
"Name": "db_server",
"State": "in-use",
"DataType": "Public",
"Attachments": [
"i-0fc"
]
},
"vol-0cc": {
"Name": "app_server",
"State": "in-use",
"DataType": "Public",
"Attachments": [
"i-051"
]
}
}
# Snapshot Dictionary
snapshot_dict = {
"vol-04f": [
{
"snap-0086": {
"Date": 20210911,
"SnapshotState": "completed"
}
},
{
"snap-06ff": {
"Date": 20210910,
"SnapshotState": "completed"
}
},
{
"snap-0263": {
"Date": 20210919,
"SnapshotState": "completed"
}
}
]
}
for volume_key, volume_value in volume_dict.items():
if volume_key in snapshot_dict:
value = {}
snapshot_value = snapshot_dict.get(volume_key)
value["Snapshots"] = snapshot_value
else:
value = {}
value["Snapshots"] = {}
volume_dict[volume_key].update(value)
print(json.dumps(volume_dict))
期望的输出
{
"vol-04f": {
"DataType": "Public",
"State": "in-use",
"Name": "db_server",
"Snapshots": [
{
"snap-0086": {
"Date": 20210911,
"SnapshotState": "completed"
}
},
{
"snap-06ff": {
"Date": 20210910,
"SnapshotState": "completed"
}
},
{
"snap-0263": {
"Date": 20210919,
"SnapshotState": "completed"
}
}
],
"Attachments": [
"i-0fc"
]
},
"vol-0cc": {
"DataType": "Public",
"State": "in-use",
"Name": "app_server",
"Snapshots": {},
"Attachments": [
"i-051"
]
}
}
【问题讨论】:
标签: python json dictionary comparison dictionary-comprehension