3 回答
TA贡献1803条经验 获得超6个赞
min()
与自定义函数一起使用key=
。您可以在以下元组中搜索最小值d.items()
:
print( min(d.items(), key=lambda k: k[1][2])[0] )
印刷:
Vertex(vertex_id='C', vertex_x=6, vertex_y=0)
TA贡献1860条经验 获得超9个赞
字典不应该这样使用。您不应尝试将值追溯到键。
试试这个:
keys = list(d.keys())
k = keys[0]
m = d[k]
for v in keys[1:]:
if d[v][2] < m[2]:
k = v
m = d[k]
你想要的顶点键将在 k 中。
TA贡献1824条经验 获得超5个赞
如果您不强制使用字典,我认为下面的代码是正确的方法。
无论如何 - 你可以看到一个现代的 NamedTuple 示例。
from typing import NamedTuple
class Vertex(NamedTuple):
id:str
x:int
y:int
class Triple(NamedTuple):
first:int
second:int
third:int
class Pair(NamedTuple):
vertex: Vertex
triple: Triple
pairs = [Pair(Vertex('B',11,0),Triple(4,5,9)),Pair(Vertex('C',6,0),Triple(2,0,2)),Pair(Vertex('A',4,0),Triple(0,2,3))]
_min = min(pairs,key=lambda p: p.triple.third)
print(_min.vertex)
添加回答
举报