从 Python 字典中的键中删除元素

Remove elements from key in Python dictionary

我有一个程序可以找到字典中包含最多项目的键。我如何删除字典中的元素以便它只打印出来

*更新: 我刚刚发现我的程序不正确。我试图找到包含最多项目的键,然后 return 相应的键

目标:

'd'

bird = { 'a': ['Parrot'], 'b': ['Columbidae'], 'c': ['Hummingbird']}

bird['d'] = ['Finch']
bird['d'].append('Owl')
bird['d'].append('Penguin')

def func(a):
    stor =[]
    for itterate in a.items():
        stor.append(itterate)
    return max(stor)


print func(bird)

当前输出:

('d', ['Finch', 'Owl', 'Penguin'])

根据值的 len()keys 进行排序会得到您想要的结果。

>>> bird = { 'a': ['Parrot'], 'b': ['Columbidae'], 'c': ['Hummingbird'], 'd': ['kiwi', 'Crow', 'Sparrow']}

>>> print sorted(bird.keys(), key = lambda x:len(bird[x]))[-1]
>>> d

你可以将这一行嵌入你的函数中:

bird = { 'a': ['Parrot'], 'b': ['Columbidae'], 'c': ['Hummingbird']}

bird['d'] = ['Finch']
bird['d'].append('Owl')
bird['d'].append('Penguin')

def func(a):
    return sorted(bird.keys(), key = lambda x:len(bird[x]))[-1]

print func(bird)

或者如 Padraic 所建议的那样,将 max 函数与 lambda 一起使用将以最小的开销完成您的工作:

def func(a):
    return max(bird.keys(), key = lambda x:len(bird[x]))

排序肯定不是获得所需内容的方法,您想要其值为最长列表的键,因此在 dict.items 上使用 max,使用值的长度作为键最大然后 return 第一个元素 :

def func(d):
    return max(d.iteritems(), key=lambda x: len(x[1]))[0]

输出:

In [4]: func(bird)
Out[4]: 'd'

您也可以在 lambda 中进行查找,但 items 可能是最快的:

def func(d):
    return max(d, key=lambda x: len(d[x]))