字典条件上的Lambda

时间:2019-10-10 18:06:24

标签: python dictionary lambda

比方说,我有一个包含字典的列表,其中包含idscorekey。我想创建一种方法,使用lambda函数返回给定key的分数。

此方法足以解决问题:

def my_search(txt):
    for i in my_dictionary:
        if i['key'] == txt:
            return i['score']

但是我想使用lambda函数来做到这一点。我尝试将lambda与过滤器配合使用,但似乎无法正常工作。我该怎么办?

我有类似的东西

[{'id': 1, 'score': 8.321, 'key': 'stv'}, {'id': 1, 'score': 6.321, 'key': 'mrk'} ... ]

4 个答案:

答案 0 :(得分:4)

def my_search(txt):
    val = list(filter(lambda elem: elem[0] == txt ,my_dictionary.items()))
    return(val[0][1])

答案 1 :(得分:0)

该函数应将一个函数作为参数,然后调用该函数而不是执行比较。

def my_search(func):
    for i in my_dictionary:
        if func(i['key']):
            return i['score']

print(my_search(lambda k: k == txt))

答案 2 :(得分:0)

您可以使用生成器表达式将my_search转换为lambda函数:

my_search = lambda txt: next(i['score'] for i in my_dictionary if i['key'] == txt)

所以给定:

my_dictionary = [
    {'id': 1, 'score': 8.321, 'key': 'stv'},
    {'id': 1, 'score': 6.321, 'key': 'mrk'}
]

my_search('mrk')将返回:

6.321

答案 3 :(得分:-1)

txt = 'a'
d = {'a':'b'}
>>> [v for k,v in d.items() if k==txt]
['b']