Почему он печатает только один? - PullRequest
0 голосов
/ 17 октября 2019

У меня есть этот плохой мальчик:

def by_complexity(db : {str: {(int,int) : float}}) -> [(str,int)]:
    complex = []
    for state, taxes in db.items():
        complex.append((state, len(taxes.values())))
        return (sorted(complex, key = lambda zps : (-zps[1],zps[0])))



db1 = {'CT': {(      0,  12_499): .02,
                      ( 12_500,  49_999): .04, 
                      ( 50_000,    None): .06},

               'IN': {(0, None): .04},

               'LA': {(      0,   9_999): .03,
                      ( 10_000,  12_499): .05,
                      ( 12_500,  49_999): .055,
                      ( 50_000, 299_999): .06,
                      (300_000,    None): .078},

                'MA': {(0, None): .055}}
print(by_complexity(db1))

Теперь, когда я запускаю его, он печатает только [('CT', 3)] вместо [('LA', 5), ('CT', 3), ('IN', 1), ('MA', 1)], так что теперь я задаюсь вопросом, почему? потому что я не могу найти в нем ошибку ... она просто не работает

1 Ответ

1 голос
/ 17 октября 2019

Это исходит из твоего уровня отступа с твоим возвращением. Вы возвращаетесь, пока еще находитесь в цикле for.

Попробуйте:

    def by_complexity(db: {str: {(int, int): float}}) -> [(str, int)]:
        complex = []
        for state, taxes in db.items():
            complex.append((state, len(taxes.values())))
        return (sorted(complex, key=lambda zps: (-zps[1], zps[0])))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...