从Python字典的键中删除元素

2024-10-04 03:18:04 发布

您现在位置:Python中文网/ 问答频道 /正文

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

*更新: 我刚发现我的程序不对。我试图找到保存最多项的键,然后返回相应的键

目标:

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


Tags: 程序元素目标字典过程owlpenguinfunc
2条回答

对其值的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]))

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

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

相关问题 更多 >