我只是想知道,在得到1或2个结果之后,是否有可能打破循环,并在相同的条件下设计它的变量。
import json
lookup_dt = "2022-03-09"
r = '{"DBClusterSnapshots": [{"DBClusterSnapshotIdentifier": "snap-1", "DBClusterIdentifier": "aurora-cluster", "SnapshotCreateTime": "2022-03-09", "Engine": "aurora-postgresql", "EngineVersion": "12.7", "SnapshotType": "manual"}, {"DBClusterSnapshotIdentifier": "snap-2", "DBClusterIdentifier": "aurora-cluster", "SnapshotCreateTime": "2022-03-09", "Engine": "aurora-postgresql", "EngineVersion": "12.7", "SnapshotType": "manual"}, {"DBClusterSnapshotIdentifier": "snap-3", "DBClusterIdentifier": "aurora-cluster", "SnapshotCreateTime": "2022-03-09", "Engine": "aurora-postgresql", "EngineVersion": "12.7", "SnapshotType": "manual"}]}'
data = json.loads(r)
snap = [
d["DBClusterSnapshotIdentifier"]
for d in response["DBClusterSnapshots"]
if d['SnapshotCreateTime'].strftime("%Y-%m-%d") == lookup_dt
]
SnapshotId, SnapshotId2,..n = SnapshotId_l[:n]
if SnapshotId :
print("INFO: Found manual snapshots for requested date: " + str(SnapshotId))
elif: SnapshotId2
print("INFO: Found manual snapshots for requested date: " + str(SnapshotId2))
else:
print("ERROR: Snapshot did not find for requested date : " + str(args_lookup_dt))
exit(1)假设在if d['SnapshotCreateTime'].strftime("%Y-%m-%d") == lookup_dt条件下,有时可以得到1或更多。日期可能是相同的,但会有一些小数时差。我的用例是:获取一个并分配varaible,如果两个分配给它两个varivales,如果超过两个只是坚持使用onyl 2。
我希望输出结果就像打印出来的一样。
这是可能的还是没有意义的?
发布于 2022-06-02 18:38:25
可以使用简单的列表理解将所有快照名称放入列表中:
import json
lookup_dt = "2022-03-09"
r = '{"DBClusterSnapshots": [{"DBClusterSnapshotIdentifier": "snap-1", "DBClusterIdentifier": "aurora-cluster", "SnapshotCreateTime": "2022-03-09", "Engine": "aurora-postgresql", "EngineVersion": "12.7", "SnapshotType": "manual"}, {"DBClusterSnapshotIdentifier": "snap-2", "DBClusterIdentifier": "aurora-cluster", "SnapshotCreateTime": "2022-03-09", "Engine": "aurora-postgresql", "EngineVersion": "12.7", "SnapshotType": "manual"}, {"DBClusterSnapshotIdentifier": "snap-3", "DBClusterIdentifier": "aurora-cluster", "SnapshotCreateTime": "2022-03-09", "Engine": "aurora-postgresql", "EngineVersion": "12.7", "SnapshotType": "manual"}]}'
data = json.loads(r)
snaps = [
d["DBClusterSnapshotIdentifier"]
for d in data["DBClusterSnapshots"]
if d["SnapshotCreateTime"] == lookup_dt
]
print(snaps) # ['snap-1', 'snap-2', 'snap-3']如果您想将前两个变量分配给变量snap1和snap2,您可以这样做:
snap1, snap2 = snaps[:2]但在实践中,您可能会发现只按原样使用snaps列表就更容易了。
(编辑)每个注释,如果希望创建时间为快照ID,则如下所示:
snap_times = {
d["DBClusterSnapshotIdentifier"]: d["SnapshotCreateTime"]
for d in data["DBClusterSnapshots"]
if d["SnapshotCreateTime"] == lookup_dt
}
print(snap_times)
# {'snap-1': '2022-03-09', 'snap-2': '2022-03-09', 'snap-3': '2022-03-09'}注意,由于我们使用lookup_dt进行了过滤,所有创建时间都将等于lookup_dt。如果不想这样做,只需删除if d["SnapshotCreateTime"] == lookup_dt行即可。
https://stackoverflow.com/questions/72480813
复制相似问题