Python 从DICT列表中获取一定数量的项,其中一个键满足某个值

Python 从DICT列表中获取一定数量的项,其中一个键满足某个值,python,dictionary,Python,Dictionary,让我们假设我有下面的清单: my_list = [ {'a': 1, 'b': 3, 'c': 0}, {'a': 1, 'b': 5, 'c': -10}, {'a': 1, 'b': 1, 'c': 1}, {'a': 2, 'b': 0, 'c': 0}, {'a': 1, 'b': 5, 'c': 0} ] 我需要从这个列表中检索两个dict,其中keya=1 如何达到

让我们假设我有下面的清单:

my_list = [
           {'a': 1, 'b': 3, 'c': 0}, 
           {'a': 1, 'b': 5, 'c': -10}, 
           {'a': 1, 'b': 1, 'c': 1}, 
           {'a': 2, 'b': 0, 'c': 0}, 
           {'a': 1, 'b': 5, 'c': 0}
]
我需要从这个列表中检索两个dict,其中key
a=1

如何达到所需的结果?

在找到所需的两个dict后,可以使用以避免遍历整个输入列表

from itertools import islice

a, b = islice((d for d in my_list if d.get('a') == 1), 2)
在已经找到所需的两个dict之后,可以使用来避免遍历整个输入列表

from itertools import islice

a, b = islice((d for d in my_list if d.get('a') == 1), 2)

我会寻求一个明确的解决方案:

def a_is_1(d):
    return d.get('a') == 1

dicts = filter(a_is_1, my_list)
假设有两个DICT,您可以将其解包:

a, b, *rest = dicts
否则,只需取尽可能多的:

result = islice(dicts, 0, 2)
每一步只做一件事,可读性很强

如果希望此步骤获得更多键和值,可以使用闭包:

def kv_filter(k, v):
    def _(d):
        return d.get(k) == v
    return _
然后:

dicts = filter(kv_filter('a', 1), my_list)

其余的都是一样的。

我想要一个明确的解决方案:

def a_is_1(d):
    return d.get('a') == 1

dicts = filter(a_is_1, my_list)
假设有两个DICT,您可以将其解包:

a, b, *rest = dicts
否则,只需取尽可能多的:

result = islice(dicts, 0, 2)
每一步只做一件事,可读性很强

如果希望此步骤获得更多键和值,可以使用闭包:

def kv_filter(k, v):
    def _(d):
        return d.get(k) == v
    return _
然后:

dicts = filter(kv_filter('a', 1), my_list)

其余的都一样。

过滤器(lambda d:d.get('a')==1,我的列表)
+Reut Sharabani我只需要两个dict!您的解决方案为我提供了所有DICT,其中键a=1的值用
islice(result,0,2)
过滤器(lambda d:d.get('a')==1,my_list)
+Reut Sharabani我只需要两个DICT!您的解决方案为我提供了所有DICT,其中键a=1的值将结果用
islice(result,0,2)
I可以实现所需的结果,但+Patrick Haugh解决方案更清晰。谢谢我可以达到预期的效果,但+帕特里克·豪夫解决方案更清晰。谢谢