n00*_*r22 2 python key max find python-3.x
我正在开发一个函数,我需要在字典中找到具有最多值的键(艺术家名称).有时两个键具有相同数量的值,在这种情况下,我需要返回一个艺术家名称列表.
示例词典:
{'M':[("One",1400,30.0, 20.5,"oil paint","Austria"),("Three",1430,100.0,102.0,"watercolor","France")],
'P':[("Eight",1460, 225.0, 200.0, "fresco","Netherlands")],
'U':[("Nine",1203,182.0, 957.0,"egg tempera","Italy"), ("Twelve",1200,76.2,101.6,"egg tempera","France")]
}
Run Code Online (Sandbox Code Playgroud)
对于这个字典,因为M和U具有最多的值(M具有2且U具有2而P仅具有1),所以该函数应该返回
artists_with_most_work(dictionary1())
['M', 'U']
Run Code Online (Sandbox Code Playgroud)
我如何搜索每个键的值的数量并返回最多的键?我认为使用max()会是一个好主意,但我不认为我在下面的当前尝试中正确使用它.感谢任何能提供帮助的人
码:
def artist_with_most_work(db):
matches = []
for key, record_list in db.items():
for record in record_list:
if item in record:
max(db) = themax
matches.append(themax)
return matches
Run Code Online (Sandbox Code Playgroud)
您必须首先找到最大长度,然后返回引用具有该长度的列表的所有键:
def artist_with_most_work(db):
maxcount = max(len(v) for v in db.values())
return [k for k, v in db.items() if len(v) == maxcount]
Run Code Online (Sandbox Code Playgroud)
演示:
>>> def artist_with_most_work(db):
... maxcount = max(len(v) for v in db.values())
... return [k for k, v in db.items() if len(v) == maxcount]
...
>>> d1 = {'M':[("One",1400,30.0, 20.5,"oil paint","Austria"),("Three",1430,100.0,102.0,"watercolor","France")],
... 'P':[("Eight",1460, 225.0, 200.0, "fresco","Netherlands")],
... 'U':[("Nine",1203,182.0, 957.0,"egg tempera","Italy"), ("Twelve",1200,76.2,101.6,"egg tempera","France")]
... }
>>> artist_with_most_work(d1)
['M', 'U']
Run Code Online (Sandbox Code Playgroud)