2012-12-20 5 views
1

이 함수를 작성하는 더 좋은 방법이 있습니까?더 많은 pythonic 방법

def highest_strength(G): 
    highest_strength = None 
    highest_strength_val = 1 
    for node1 in G: 
     for node2 in G[node1]: 
      val = G[node1][node2] 
      if val > highest_strength_val: 
       highest_strength_val = val 
       highest_strength = (node1, node2) 
    return highest_strength 

답변

4

매우 간단합니다 :

그것의 방법
def highest_strength(graph): 
    return max((s, x, y) for x, links in graph.items() for y, s in links.items()) 

일 :

>>> highest_strength(graph) 
(4, 'c', 'b') 

확장 버전 : 당신은 그들이 생각하는 경우

def highest_strength(G): 
    best_strength, best_link = None, (None, None) 
    for x, links in G.items(): 
     for y, v in links.items(): 
      if v > best_strength: 
       best_strength, best_link = v, (x, y) 
    return best_link 
+1

@Rastegar, 당신이 답변을 받아 들여야한다 정확하고 좋다. 그렇지 않으면 사용자가 더 이상 질문에 대한 답변을 제공하지 않습니다. :) – defuz

관련 문제