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)
添加回答
舉報