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

时间:2015-10-11 07:40:21

标签: python dictionary key element

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

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

目标:

  

'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'))

2 个答案:

答案 0 :(得分:2)

对其值keys上的len()进行排序可以获得理想的结果。

>>> 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]))

答案 1 :(得分:0)

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

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

输出:

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

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

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