繁体   English   中英

python列表理解按键获取字典

[英]python list comprehension get dictionary by key

给定键“ joe”,我如何从my_list提取字典{'joe': 60}

my_list = [{'joe': 60}, {'dave': 61}]

我想避免使用for循环

[dic for dic in my_list if 'joe' in dic]

或更一般而言

def get_dicts(alist, key):
    return [dic for dic in alist if key in dic]

get_dicts(my_list, 'joe')

但是,如果您的词典只有一个键,并且每个词典的键都是唯一的,则您的数据结构可能不是最佳的。 您可能只有一个字典dic = {'joe': 60, 'dave': 50}并获得dic[joe]

循环是不可避免的,但是您可以很好地屏蔽它:

import itertools
next(itertools.ifilter(lambda x: key in x, my_list))

这要么发出第一个匹配的字典,要么引发您可以检查的StopIteration异常。 或者您可以进行递归:

def matches(key, lst):
    if not lst:
        return None
    if key in lst[0]:
        return lst[0]
    return matches(key, lst[1:])

这仍然是一个for循环,但努力使它看起来不像一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM