programing

Python의 목록에 해당하는 사전 키 값 반복

newsource 2023. 4. 15. 08:56

Python의 목록에 해당하는 사전 키 값 반복

Python 2.7에서 작업.팀 이름을 키로 하고 각 팀이 채점하고 허용되는 득점 수를 값 목록으로 하는 사전이 있습니다.

NL_East = {'Phillies': [645, 469], 'Braves': [599, 548], 'Mets': [653, 672]}

사전을 함수에 넣어 각 팀(키)에 반복할 수 있도록 하고 싶다.

이게 내가 사용하는 코드야.지금은 팀별로만 갈 수 있어요.각 팀에 대해 어떻게 반복하고 각 팀의 예상 win_percentage를 출력합니까?

def Pythag(league):
    runs_scored = float(league['Phillies'][0])
    runs_allowed = float(league['Phillies'][1])
    win_percentage = round((runs_scored**2)/((runs_scored**2)+(runs_allowed**2))*1000)
    print win_percentage

도와주셔서 감사합니다.

사전을 통해 반복하기 위한 몇 가지 옵션이 있습니다.

사전 자체에 대해 반복하는 경우(for team in league사전의 키를 사용하여 반복합니다.for 루프를 사용하여 루프할 경우 dict 위에 루프하든 동작은 동일합니다( ).league) 자체 또는:

for team in league.keys():
    runs_scored, runs_allowed = map(float, league[team])

키와 값을 동시에 반복할 수도 있습니다.league.items():

for team, runs in league.items():
    runs_scored, runs_allowed = map(float, runs)

다음 작업을 반복하면서 태플 포장을 해제할 수도 있습니다.

for team, (runs_scored, runs_allowed) in league.items():
    runs_scored = float(runs_scored)
    runs_allowed = float(runs_allowed)

사전에서도 쉽게 반복할 수 있습니다.

for team, scores in NL_East.iteritems():
    runs_scored = float(scores[0])
    runs_allowed = float(scores[1])
    win_percentage = round((runs_scored**2)/((runs_scored**2)+(runs_allowed**2))*1000)
    print '%s: %.1f%%' % (team, win_percentage)

사전에는 다음과 같은 기능이 내장되어 있습니다.iterkeys().

시험:

for team in league.iterkeys():
    runs_scored = float(league[team][0])
    runs_allowed = float(league[team][1])
    win_percentage = round((runs_scored**2)/((runs_scored**2)+(runs_allowed**2))*1000)
    print win_percentage

사전 개체를 사용하면 항목을 반복할 수 있습니다.또한 패턴 매칭과 분할을 통해__future__조금 더 간단하게 할 수 있습니다.

마지막으로 인쇄와 논리를 분리하여 나중에 리팩터/디버깅을 좀 더 쉽게 할 수 있습니다.

from __future__ import division

def Pythag(league):
    def win_percentages():
        for team, (runs_scored, runs_allowed) in league.iteritems():
            win_percentage = round((runs_scored**2) / ((runs_scored**2)+(runs_allowed**2))*1000)
            yield win_percentage

    for win_percentage in win_percentages():
        print win_percentage

목록 이해는 일을 줄일 수 있다...

win_percentages = [m**2.0 / (m**2.0 + n**2.0) * 100 for m, n in [a[i] for i in NL_East]]

언급URL : https://stackoverflow.com/questions/7409078/iterating-over-dictionary-key-values-corresponding-to-list-in-python