首页 > 解决方案 > 如何找到列表中键最多的字典?

问题描述

我有一个包含字典的列表,我想获取包含最多键的字典。

我该怎么做,最有效的方法是什么?

对于列表:

myList = [
    {
        'foo':12,
        'bar':14,
        'ali':34,
        'met':45
    },
    {
        'moo':52
    },
    {
        'doo':6,
        'tar':84,
        'moo':52
    }
]

我想得到result = {'foo':12, 'bar':14, 'ali':34, 'met':45}

标签: pythonlistdictionarydata-structures

解决方案


我想说最好的方法是使用带有您自己设置的参数的max函数。参数是将用于比较元素的函数keykey在这里,如果您想比较字典的大小,您的功能将类似于

def comp_func(dic) :
    return len(dic)

然后你可以像这样使用 max 函数

max_dict = max(myList, key=comp_func)

你也可以使用 lambda 函数(我认为这是最好的解决方案)

max_dict = max(myList, key=lambda dic: len(dic))

编辑

实际上,就像另一个答案所说的那样,您不必为了使用而重新创建函数len,所以最好的方法是

max_dict = max(myList, key=len)

推荐阅读