我正在写一个函数,让我通过字典。该字典包含艺术家作为键和他们的绘画作为价值观。我需要在具有最大面积的字典中找到该绘画,并且如果有两个面积相等的字典,他们应该作为元组列表返回。查找字典中最大的区域
例词典:
{
'A, Jr.':[("One",1400,10,20.5,"oil paint","Austria"),("Three",1400,100.0,100.0,"oil paint","France"),("Twenty",1410,50.0,200.0,"oil paint","France")],
'X':[("Eight",1460, 100.0, 20.0, "oil paint","France"),("Six",1465,10.0, 23.0, "oil paint", "France"),("Ten",1465,12.0,15.0,"oil paint","Austria"),("Thirty",1466,30.0,30.0,"watercolor","Germany")],
'M':[("One, Two", 1500, 10.0, 10.0, "panel","Germany")]
}
基本上四位数字是绘画或艺术作品创建年和接下来的两个数字是长度和宽度。在乘以长度和宽度时,我需要返回具有最大面积的值。因此,对于上述辞典功能find_largest应该返回
find_largest(dictionary2())
[('A, Jr.', 'Three'), ('A, Jr.', 'Twenty')]
由于100 * 100 = 10000“三化”绘画和50 * 200 = 10000“二十”画它们都返回元组列表中。
有没有人有如何做到这一点的意见?我已经开始下面的代码,但我不认为这是正确的方法。
def find_largest(dictionary):
matches = {}
for key, the_list in db.items():
for record in the_list:
value = record[4]
if dictionary in record:
if key in matches:
max(the_list)
max(lst, key=lambda tupl: tupl[2]*tupl[3])
matches[key].append(record)
else:
matches[key] = [record]
return matches
这基本上是我的代码从一个较早的函数,有一些重大的变化。这个基本框架为我的一些目标工作。我添加了最大(匹配),但我意识到这并没有太大的作用,除非函数将长度和宽度相乘,然后查找最大值。如果任何人有意见这将有助于
你可以通过'max'一个'key'参数:'MAX(LST,关键= lambda tupl:tupl [2] * tupl [3])'会从你的字典中的一个列表中得到具有最大面积的元组。 – schwobaseggl
感谢您的建议,我应该把这个代替max(火柴)? – n00bprogrammer22
这将更适合该代码中的'max(the_list)',但max通常只会返回一个项目,即使多个项目共享最大值 – schwobaseggl