如何从其他功能访问功能

时间:2020-10-06 11:16:29

标签: python

下方的json

data = [{"id":1,"name":"a"},{"id":2,"name":"b"},{"id":3,"name":"c"}]

  • 我有一个很大的json,我正在通过一个函数从中提取id

  • 我的第二个函数将提取元素的数量

    #extract the id from the json
    total  = []
    def id_extract(data):
        for i in data:
            j = {"id" : i["id"]}
            total.append(j)
        return total 
    
    #extract length from the json
    def length_(data):
        return(len(data))

我当前的输出是[{"id":1},{"id":2},{"id":3}]

预期为 [{'count':3}{"id":1},{"id":2},{"id":3}]

NB:这个问题主要是要注意将一个功能传递给另一功能

2 个答案:

答案 0 :(得分:3)

您想要类似的东西吗?

#extract the id from the json
def id_extract(data):
    return [{"id" : e["id"]} for e in data]

#extract length from the json
def add_length(data):
    data.insert(0, {"count" : len(data)}) # insert the element at the first position

data = [{"id":1,"name":"a"},{"id":2,"name":"b"},{"id":3,"name":"c"}]

d = id_extract(data)
print(d) # OUTPUT : [{'id': 1}, {'id': 2}, {'id': 3}]
add_length(d)
print(d) # OUTPUT : [{'id': 1}, {'id': 2}, {'id': 3}, {'count': 3}]

列表是mutable,所以我不需要在add_length函数中返回列表。

答案 1 :(得分:2)

像这样?不需要返回列表,因为它是可变的,有一些更好的方法可以编写此表,但是就调用另一个函数而言,通常可以只调用它。

def id_extract(data):
    cur_count = {"count": length(data)}
    total.append(cur_count)

    for i in data:
        j = {"id": i["id"]}
        total.append(j)

# extract length from the json
def length(data):
    return(len(data))