繁体   English   中英

从字典列表中获取字典中键的值

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

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