如何从python中的字典中获取值进行计算?
我要回答以下问题: 八,。 我们有一本包含几个矩形岛屿的词典:如何从python中的字典中获取值进行计算?,python,python-3.x,dictionary,math,area,Python,Python 3.x,Dictionary,Math,Area,我要回答以下问题: 八,。 我们有一本包含几个矩形岛屿的词典: islands = { "Banana island" : (3,5,7,6), "Mango island" : (10,3,19,4), "Pineapple island" : (8,8,9,20), "Coconut island" : (2,13,5,9) } 编写代码,使用 land_矩形_面积函数 我已为该区域创建了一个函数: def land_rectangle_
islands = {
"Banana island" : (3,5,7,6),
"Mango island" : (10,3,19,4),
"Pineapple island" : (8,8,9,20),
"Coconut island" : (2,13,5,9)
}
编写代码,使用
land_矩形_面积函数
我已为该区域创建了一个函数:
def land_rectangle_area(x1, y1, x2, y2):
area=abs((int(x1)-int(x2))*(int(y1)-int(y2)))
return(area)
>>> [(k,land_rectangle_area(*t)) for k,t in islands.items()]
[('Pineapple island', 12), ('Coconut island', 12), ('Banana island', 4), ('Mango island', 9)]
我不确定我如何从这里开始回答这个问题?好了。只需在岛上迭代,找到它们的面积,如果当前面积小于最小值,则更新您的答案
def land_rectangle_area(x1, y1, x2, y2):
area=abs((int(x1)-int(x2))*(int(y1)-int(y2)))
return(area)
islands = {
"Banana island" : (3,5,7,6),
"Mango island" : (10,3,19,4),
"Pineapple island" : (8,8,9,20),
"Coconut island" : (2,13,5,9)
}
minimum = float('Inf') # equivalent to infinity
ans=''
for i in islands:
a = land_rectangle_area(*islands[i])
if a<minimum:
minimum = a
ans = i
print (ans,minimum)
想想你的习题集:
- 你已经拿到容器了。因此,现在您需要学习如何访问其内容
- 您已经知道计算面积的函数(
)A=L*W
- 你需要找到最小面积。因此,您需要跟踪最低值
smallestAreaSoFar = None
smallestIsland = None
for each island in my container of islands:
access island coordinates
calculateArea(coordinates)
if we havent seen an area yet:
smallestAreaSoFar = calculatedArea
smallestIsland = island
if we have:
if smallestAreaSoFar > calculatedArea:
smallestAreaSoFar = calculatedArea
smllestIsland = island
output smallestIsland
您可以使用Python的
min
函数和land\u rectangle\u area
函数作为键来执行此操作:
def land_rectangle_area(x1, y1, x2, y2):
area=abs((int(x1)-int(x2))*(int(y1)-int(y2)))
return(area)
>>> min(islands.items(), key=lambda (k,t): land_rectangle_area(*t))
('Banana island', (3, 5, 7, 6))
您可以通过相同的方式找到max
:
>>> max(islands.items(), key=lambda (k,t): land_rectangle_area(*t))
('Pineapple island', (8, 8, 9, 20))
或者,使用列表理解将元组转换为区域:
def land_rectangle_area(x1, y1, x2, y2):
area=abs((int(x1)-int(x2))*(int(y1)-int(y2)))
return(area)
>>> [(k,land_rectangle_area(*t)) for k,t in islands.items()]
[('Pineapple island', 12), ('Coconut island', 12), ('Banana island', 4), ('Mango island', 9)]
然后取其min
:
>>> min([(k,land_rectangle_area(*t)) for k,t in islands.items()], key=lambda t: t[1])
或者将它们从最小到最大排序:
>>> sorted(islands.items(), key=lambda (k,t): land_rectangle_area(*t))
[('Banana island', (3, 5, 7, 6)), ('Mango island', (10, 3, 19, 4)), ('Pineapple island', (8, 8, 9, 20)), ('Coconut island', (2, 13, 5, 9))]
(由于椰子岛和菠萝岛具有相同的面积,因此它们中的任何一个都可以被视为函数和排序的max
。您可以添加另一个键以确定…)
或者您可以绕过命名函数,只需将min
与键函数一起使用:
>>> min(islands.items(), key=lambda (k,t): abs((t[0]-t[2])*(t[1]-t[3])))
从这个开始怎么样?正如我的导师在任何标准库中所说,“RTFM”。听起来你需要阅读文档/教程。官方文档/教程是一个很好的开始。不要给
min
@Miraj50添加阴影,他们的意思是当min
是一个内置变量(即min(a,b)
)时,一定要使用变量名min
)