[英]how can I change json "dict" into a consumable format for aws boto3 tagset list of dicts
I have a JSON file that contains a tagset (key, values) in the following format:我有一个 JSON 文件,其中包含以下格式的标记集(键、值):
{"Key1":"ValueA", "Key2":"ValueB"}
The boto3 S3 put_bucket_tagging
operation needs to get the tagset in the following format: boto3 S3 put_bucket_tagging
操作需要获取如下格式的tagset:
'TagSet': [
{
'Key': 'Key1',
'Value': 'ValueA',
},
{
'Key': 'Key2',
'Value': 'ValueB',
}
]
It looks like a list of dicts, but I don't know how to get there.它看起来像一个字典列表,但我不知道如何到达那里。 I have tried:我努力了:
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()
which results in:这导致:
'Tagset': [{'Key': 'Key1', 'Value': 'Key1'}, {'Key': 'Key2', 'Value': 'Key2'}
'Value': 'Key1'
and 'Value': 'Key2'
are obviously wrong, as they need to be the values. 'Value': 'Key1'
和'Value': 'Key2'
显然是错误的,因为它们必须是值。
I understand that the "value": data[key]
part in my code is not correct but I don't know how to get the "values" from the json in the values from the tagset.我知道我的代码中的"value": data[key]
部分不正确,但我不知道如何从标签集中的值中的 json 获取“值”。 Also I don't know if my approach with the for loop is at all correct, it feels a bit weird to me.另外我不知道我使用 for 循环的方法是否正确,这对我来说有点奇怪。 I'm not stuck to the for loop method, any other suggestion to get from the json to the tagset is more than welcome.我不拘泥于 for 循环方法,任何其他从 json 到标签集的建议都非常受欢迎。
You can get both the key and the value in your iteration by using .items()
:您可以使用.items()
迭代中的键和值:
content=[]
for k,v in data.items():
content.append({"Key":k, "Value":v})
mynewtagset = "'Tagset': "+ str(content)
You could also do this using list comprehension if you like to play code golf:如果你喜欢打代码高尔夫,你也可以使用列表推导来做到这一点:
mynewtagset="'Tagset': "+str([{"Key":k, "Value":v} for k, v in data.items()])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.