如何从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
  • 你需要找到最小面积。因此,您需要跟踪最低值
考虑到这一点,您应该能够推理出流程(但不一定是实现)。在这些情况下,拿出好的ole’笔和纸,写下来:

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