如何从 python 中的字典中取值进行计算?
How do you take values from dictionaries in python for calculations?
我必须回答以下问题:
8。
我们有一个包含几个矩形岛的字典:
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_rectangle_area 函数。
我已经为该区域创建了一个函数:
def land_rectangle_area(x1, y1, x2, y2):
area=abs((int(x1)-int(x2))*(int(y1)-int(y2)))
return(area)
我不确定如何从这里开始处理这个问题?
给你。只需遍历岛屿,找到它们的面积并在当前面积小于最小值时更新您的答案。
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)
输出:
('Banana island', 4)
想想你的问题集:
- 你已经得到了容器。所以现在您需要了解如何访问其内容。
- 您已经知道计算面积的函数(
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_rectangle_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))
或者,使用列表理解将元组转换为区域:
>>> [(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])))
我必须回答以下问题:
8。 我们有一个包含几个矩形岛的字典:
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_rectangle_area 函数。
我已经为该区域创建了一个函数:
def land_rectangle_area(x1, y1, x2, y2):
area=abs((int(x1)-int(x2))*(int(y1)-int(y2)))
return(area)
我不确定如何从这里开始处理这个问题?
给你。只需遍历岛屿,找到它们的面积并在当前面积小于最小值时更新您的答案。
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)
输出:
('Banana island', 4)
想想你的问题集:
- 你已经得到了容器。所以现在您需要了解如何访问其内容。
- 您已经知道计算面积的函数(
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_rectangle_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))
或者,使用列表理解将元组转换为区域:
>>> [(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])))