繁体   English   中英

如何将 json“dict”更改为 aws boto3 tagset list of dicts 的可消耗格式

[英]how can I change json "dict" into a consumable format for aws boto3 tagset list of dicts

我有一个 JSON 文件,其中包含以下格式的标记集(键、值):

{"Key1":"ValueA", "Key2":"ValueB"}

boto3 S3 put_bucket_tagging操作需要获取如下格式的tagset:

'TagSet': [
            {
                'Key': 'Key1',
                'Value': 'ValueA',
            },
            {
                'Key': 'Key2',
                'Value': 'ValueB',
            }
        ]

它看起来像一个字典列表,但我不知道如何到达那里。 我努力了:

    def reformat_json_tagset():
    
        with open('tagset.json') as json_file:
                data = json.load(json_file)
    
    
        info = {}
        content = []
    
        for key in data:
            info = {
                "Key": data[key],
                "Value": data[key],
            }
            content.append(info)
    
        mynewtagset = print("'Tagset': "+ str(content))
        return(mynewtagset)
    
    reformat_json_tagset()

这导致:

'Tagset': [{'Key': 'Key1', 'Value': 'Key1'}, {'Key': 'Key2', 'Value': 'Key2'}

'Value': 'Key1''Value': 'Key2'显然是错误的,因为它们必须是值。

我知道我的代码中的"value": data[key]部分不正确,但我不知道如何从标签集中的值中的 json 获取“值”。 另外我不知道我使用 for 循环的方法是否正确,这对我来说有点奇怪。 我不拘泥于 for 循环方法,任何其他从 json 到标签集的建议都非常受欢迎。

您可以使用.items()迭代中的键和值:

content=[]
for k,v in data.items():    
    content.append({"Key":k, "Value":v})
mynewtagset = "'Tagset': "+ str(content)

如果你喜欢打代码高尔夫,你也可以使用列表推导来做到这一点:

mynewtagset="'Tagset': "+str([{"Key":k, "Value":v} for k, v in data.items()])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM