How can I use two methods on the same line in python?

1

How could I sort the methods of the last two lines of comnetado code, so that it works in this code:

# É criada a hash 'pontuações' a qual ira armazenar e ao mesmo tempo linkar os nomes as pontuações
pontuações = { }
arquivo = open("results.txt")
for linha in arquivo:
    (nome, pontuação) = linha.split()
    # A variável pontuações com a chave tendo como valor as variáveis do array 'pontuação' e tem como valor as variáveis do array 'nome'
    pontuações[pontuação] = nome
print("As pontuações mais altas são : ")
# Pode ser traduzido essa linha de código como 'para cada_pontuação(nova variável criada) em pontuações'retornar um array com as chaves do hash' '
for cada_pontuação in pontuações.keys():
    # Mostra os valores(os nomes neste caso) assosciados as chaves de 'pontuações' juntamente com 'pontuou' e mostra as chaves da variável 'cada_pontuação'
    print(pontuações[cada_pontuação] + '    pontuou ' + cada_pontuação)
'''
pontuações.keys(.sort(reverse = True))
print(pontuações)
'''
    
asked by anonymous 22.01.2017 / 21:31

2 answers

2

It's not a matter of "using two methods on the same line" - it's just that "sort" returns no value: it sorts the list internally.

But Python also has the built-in function sorted - it creates a new ordered list from a sequence, and returns that new sequence - then it can be used as a parameter for another function:

print(sorted(pontuações))

But never let "not make the same line" mess up your schedule - it's not about on less lines. In the case of Python, specifically, the question is "how to make the program readable to anyone who comes after me can continue".

In the case of sort there is sorted that allows you to put everything in one expression, but if there were not, there is no problem in using multiple lines of code to express an operation.

    
22.01.2017 / 22:14
-1

If the keys of a dictionary are numbers ( float or int ), list(dict.keys()) returns an ordered list of them. Example:

d=dict({5.1:"asd", 2.3:"bbjs", 4.0:"sdad", 3.6:"dsf"})

list(d.keys())

Out[54]: [2.3, 3.6, 4.0, 5.1]

To get an ordered list in reverse order:

sorted(list(d.keys()), reverse=True)

Out[58]: [5.1, 4.0, 3.6, 2.3]

Tailoring your code:

# É criada a hash 'pontuações' a qual ira armazenar e ao mesmo tempo linkar os nomes as pontuações
pontuações = { }
arquivo = open("results.txt")
for linha in arquivo:
    (nome, pontuação) = linha.split()
    # A variável pontuações com a chave tendo como valor as variáveis do array 'pontuação' e tem como valor as variáveis do array 'nome'
    pontuações[float(pontuação)] = nome # provavelmente pontuação é uma string por ser parte de uma linha de texto, force-a a ser um float
print("As pontuações mais altas são : ")
# Pode ser traduzido essa linha de código como 'para cada_pontuação(nova variável criada) em pontuações'retornar um array com as chaves do hash' '
for cada_pontuação in pontuações.keys():
    # Mostra os valores(os nomes neste caso) assosciados as chaves de 'pontuações' juntamente com 'pontuou' e mostra as chaves da variável 'cada_pontuação'
    print(pontuações[cada_pontuação] + '    pontuou ' + cada_pontuação)

print( sorted(list(pontuações.keys()), reverse=True) )
    
22.01.2017 / 22:28