我正在研究一个函数,我需要在具有最大值的字典中查找(艺术家姓名的)关键字。有时候两个键有相同数量的值,在这种情况下,我需要返回一个艺术家名字列表。使用字典中的大多数值查找关键字
例词典:
{'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")]
}
对于由于M此字典和U具有的最值(M具有2和U具有2而P仅具有1)函数应该返回
artists_with_most_work(dictionary1())
['M', 'U']
我怎么能搜索每个键的数值并返回那些最重要的值?我想通过使用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
由于这似乎有时会返回[“U”,“M”]而不是[“M”,“U”]当测试是有可能解决这所以它总是它,以便?我试着做maxcount.sort(),但这不起作用,因为它是一个int – n00bprogrammer22
你可以使用OrderedDict,它将保持插入元素的顺序。除了定义db = OrderedDict()而不是db = {}以外,其他地方都不会改变。除此之外,你可以使用排序(maxcount)来排序列表,它应该给你['M','U'] – Tyg13
@ n00bprogrammer22:是的,因为你传递了一个字典,而一个字典是一个无序的数据结构。如果您需要按特定顺序输入密钥,请将数据加载到'collections.OrderedDict()'对象中。 –