我尝试使用 拆分 json 资料data[1:]
,但不起作用。
更具体地说,我想要做的是忽略 .json 的第一个物件阵列,但将其余部分保留在变量中
py
f = open("people_data.json", "r")
data = json.load(f)
people = data[1:]
# irrelevant code
JSON
{
"variable_id": [
{
"name": "anybody",
"age": "25",
"job": "insurance company"
}
],
"Skills": [
{
"area": "programmer",
"level": "junior",
"comments": "..."
}
],
"other": [
{
"something": "..."
}
]
我的目标是拥有一个包含技能和其他人的变量,但没有个人资料。
这只是一个例子,因为问题是我不知道以下阵列的名称是什么,因为它们将是变量而不是技能或其他名称
uj5u.com热心网友回复:
您的资料是 a dict
,而不是 a list
,因此切片不可用。(还有一个哲学问题,您是否可以假设这variable_id
是第一项:Pythondict
是按插入排序的,但 JSON 物件不是。)
最简单的方法是简单地洗掉您不想要的密钥。
with open("people_data.json") as f:
data = json.load(f)
people = dict(data)
people.pop("variable_id")
# Or just data.pop("variable_id") if you don't care about preserving the original dict.
uj5u.com热心网友回复:
那是结构资料的误导。在 Python 中,语言中存在许多内置结构,如串列、元组、字典和 json,您正在使用将一种结构访问到另一种结构的方法。
串列由从 0(零)开始的位置索引访问,例如:
l = [1,2,3]
l[0] # 1
l[2] # 2
在字典中,我们使用键来获取值:
d = {'key':'value','key2':'value2'}
d['key'] # 'value'
d['key2'] # 'value2'
因此,在您的示例中,您可以使用:
f = open("people_data.json", "r")
data = json.load(f)
people['skills'] # print a list of dicts
# [
# {
# "area": "programmer",
# "level": "junior",
# "comments": "..."
# }
# ]
如果你不知道字典中的键,你可以迭代它们:
keys = d.keys()
d[keys[0]] # for the first result returned by the keys() method
参考资料:资料结构
0 评论