python 函数请教正确写法


arrData= [
{"name":"小明","age":18},
{"name":"小张","age":10},
{"name":"小明","age":18},
]

查找,name为小明, age为18,有几个,也许会有多个条件,所以要用for
下面写法错误
def search_field(arr, **kwargs):#
    def iterator_obj(obj):
        result = False
        for i in kwargs:
            if obj[i] == kwargs[i]:
                result = True
        return result
    return filter(iterator_obj, arr)

search_field(arrData, {'name':"小明",'age':18})

请教正确写法

关键字参数传错了,应该下面这样传。同时过滤函数默认result =True,不相等直接 return False就行

arrData= [
{"name":"小明","age":18},
{"name":"小张","age":10},
{"name":"小明","age":18},
{"name":"小明","age":16},
]
def search_field(arr, **kwargs):#
    def iterator_obj(obj):
        result = True
        for i in kwargs:
            if obj[i] != kwargs[i]:
                return False
        return result
    return filter(iterator_obj, arr)
result=search_field(arrData, name="小明",age=18)
print(list(result))
arrData= [
{"name":"小明","age":18},
{"name":"小张","age":10},
{"name":"小明","age":18},
]

def filter_f(arr,dic):
    count = 0
    for i in range(0,len(arr)):
        if arr[i]== dic:
            count += 1
    return  count


def search_field(arr, *kwargs):#
    for i in range(0,len(kwargs)):
        count = filter_f(arr,kwargs[i])
        print(kwargs[i],'出现了',str(count),'次')

search_field(arrData, {'name':"小明",'age':18}, {'name':"小张",'age':10})

img

我的更准确,请给采纳哦,


arrData= [
{"name":"小明","age":18},
{"name":"小张","age":10},
{"name":"小明","age":18},
]

def search_field(arr, *lst):
    for d in lst:
        if d in arr:
            return 1            
    return 0
search_field(arrData, [{'name':"小明",'age':18}])

既然查询条件有多个,那你的查询条件肯定应该是个列表,而不是字典

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632