我正在阅读一个json,并希望获得具有特定id的标签字段。
with open("local_en.json") as json_file:
parsed_dict = json.load(json_file)
print(parsed_dict) # works
print(parsed_dict["interface"]) # works
print(parsed_dict["interface"]["testkey"])
我的json有数据块(“接口”或“设置”),这些数据块包含数组。
{
"interface":[
{"id": "testkey", "label": "The interface block local worked!"}
{"id": "testkey2", "label": "The interface block local worked, AGAIN!"}
],
"settings":[
],
"popup_success":[
],
"popup_error":[
],
"popup_warning":[
],
"other_strings":[
]
}
2条答案
按热度按时间mcdcgff01#
你需要浏览所有的值,并检查它是否与期望值匹配。因为值在字典中不保证是唯一的,你不能像处理键那样简单地直接引用它们。
wswtfjt72#
你可以通过列表解析在
interface
列表中“找到”元素,并从该元素中获取标签。例如:如果不能假设相关的id存在,那么可以将其 Package 在try-except中,或者可以获取标签列表并验证其长度不为0,或者您认为最适合您的任何方法。
当你这样做的时候,你可能想显式地处理多个元素具有相同的id,等等。
关于您的错误的说明:
parsed_dict["interface"]
是一个列表,所以你可以用int
s(以及切片和其他东西,但这不是重点)来索引它,而 * 而不是 * 用str
ings。每个列表元素都是一个
dict
,其中包含两个key
:id
和label
,所以即使你取一个特定的元素,比如-您 * 仍然 * 不能执行
el['testkey']
,因为这是dict的value
,而不是key
。你 * 可以 * 检查
id
是否是你要找的,通过-实际上,我上面给出的一行代码实际上只是用循环遍历所有元素的简写...