[英]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.