首页 > 解决方案 > 将字典和列表值动态传递给 json 有效负载

问题描述

我有一个字典,其中表 ID 作为键,表名作为值,另一个列表具有对应于表刷新策略的字典列表。我正在尝试将字典值和列表元素动态传递给 JSON blob,然后将其传递给 API 发布请求,但看起来我正在向发布请求发送重复请求。

PS:这只是看起来像原始数据的示例数据。

d = {101: bh, 
     102: cy,
     103: ui,
     104: act}

l = [{'refresh_method': 'FULL'},
     {'refresh_method': 'FULL'},
     {'refresh_method': 'INCREMENTAL', 'refresh_field': 'updated_at'},
     {'refresh_method': 'INCREMENTAL', 'refresh_field': 'updated_at'}]


for key, value in d.items():
    for a in l:
        payload = {
        "entityType": "dataset",
        "id":  key,
        "path":  value,
        "type": "PHYSICAL_DATASET",
        "accelerationRefreshPolicy": {
            "method": a['refresh_method'],    
            "refreshField": a['refresh_field'],
            "neverRefresh": True,
            "neverExpire": True,
        },
     }
    resp = requests.requests('POST', url, json=payload)

当我打印有效负载时,我看不到第二个循环中的值。是因为两个循环吗?有更好的方法吗?

{'entityType': 'dataset', 'id': 101, 'path': ['db', 'public', 'bh'], 'type': 'PHYSICAL_DATASET', 'accelerationRefreshPolicy': {'method': 'INCREMENTAL', 'refreshField': 'updated_at', 'neverRefresh': True, 'neverExpire': True}}
{'entityType': 'dataset', 'id': 102, 'path': ['db', 'public', 'cy'], 'type': 'PHYSICAL_DATASET', 'accelerationRefreshPolicy': {'method': 'INCREMENTAL', 'refreshField': 'updated_at', 'neverRefresh': True, 'neverExpire': True}}
{'entityType': 'dataset', 'id': 103, 'path': ['db', 'public', 'ui'], 'type': 'PHYSICAL_DATASET', 'accelerationRefreshPolicy': {'method': 'INCREMENTAL', 'refreshField': 'updated_at', 'neverRefresh': True, 'neverExpire': True}}
{'entityType': 'dataset', 'id': 104, 'path': ['db', 'public', 'act'], 'type': 'PHYSICAL_DATASET', 'accelerationRefreshPolicy': {'method': 'INCREMENTAL', 'refreshField': 'updated_at', 'neverRefresh': True, 'neverExpire': True}}

预期结果:

{'entityType': 'dataset', 'id': 101, 'path': ['db', 'public', 'bh'], 'type': 'PHYSICAL_DATASET', 'accelerationRefreshPolicy': {'method': 'FULL', 'refreshField':'', 'neverRefresh': True, 'neverExpire': True}}
{'entityType': 'dataset', 'id': 102, 'path': ['db', 'public', 'cy'], 'type': 'PHYSICAL_DATASET', 'accelerationRefreshPolicy': {'method': 'FULL', 'refreshField': '', 'neverRefresh': True, 'neverExpire': True}}
{'entityType': 'dataset', 'id': 103, 'path': ['db', 'public', 'ui'], 'type': 'PHYSICAL_DATASET', 'accelerationRefreshPolicy': {'method': 'INCREMENTAL', 'refreshField': 'updated_at', 'neverRefresh': True, 'neverExpire': True}}
{'entityType': 'dataset', 'id': 104, 'path': ['db', 'public', 'act'], 'type': 'PHYSICAL_DATASET', 'accelerationRefreshPolicy': {'method': 'INCREMENTAL', 'refreshField': 'updated_at', 'neverRefresh': True, 'neverExpire': True}}

如果我能在这里得到一些帮助,真的很感激。

标签: pythonlistdictionary

解决方案


推荐阅读