[英]Get value of key in dict from a list of dictionaries
假设 dict_lst = dict 列表。 我试图返回与 dict_lst 中以参数 k 作为键的最新 dict 关联的值。 如果 k 不在 dict_lst 的任何字典中,我们必须引发 KeyError。 我该怎么做?
def get_value(dict_lst, k):
pass
例子:
dict_lst = [{'a':1, 'b':2, 'c':3}, {'c':4, 'd':5, 'e':6}, {'e':7, 'f':8, 'g':9}]
d['c'] --> 4(发现带有 'c' 的第二个 dict 是最新的 dict)
d['y'] --> 键错误
这似乎具有您正在寻找的行为:
def get_value(dict_lst, k):
values = list()
for dl in dict_lst:
try:
values.append(dl[k])
except KeyError:
pass
if len(values) == 0:
raise KeyError()
return values[-1]
dict_lst = [{'a':1, 'b':2, 'c':3}, {'c':4, 'd':5, 'e':6}, {'e':7, 'f':8, 'g':9}]
get_values(dict_lst, k='c') # returns 4
get_values(dict_lst, k='y') # raises KeyError
反转列表的顺序,以便首先检查最后一个元素
dict_lst = [{'a':1, 'b':2, 'c':3}, {'c':4, 'd':5, 'e':6}, {'e':7, 'f':8, 'g':9}]
def get_value(dict_lst, k):
for i in dict_lst[::-1]:
if k in i.keys():
return i.get(k)
raise KeyError
print(get_value(dict_lst,'c')) #returns 4
print(get_value(dict_lst,'m')) #returns KeyError
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.