拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 拆分json资料python

拆分json资料python

白鹭 - 2022-03-17 2173 0 0

我尝试使用 拆分 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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *