我有一个过程,可以找到字典中包含最多项目的键。如何删除字典中的元素,使其只打印出来
*更新: 我刚发现我的程序不正确。我试图找到包含最多项目的密钥,然后返回相应的密钥
目标:
'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'))
答案 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]))