#fonte: https://www.udemy.com/python-expert/learn/v4/t/lecture/4835628 #------------------------------------------------------------------------------ # Calculo com dicionarios (mapeamento do conjunto chave/valor - associacao cahve/valor) d = { 'tv':3500, 'notebook':3000, 'iphone': 4500 } print(d) # Obtendo os valores minimos # usando a funcao zip para inverter o par chave/valor do dicionario # zip trabalha com par chave/valor (tupla) min_preco = min(zip(d.values(), d.keys())) print(min_preco) #x = np.linspace(0, 2 * np.pi, 100) # #plt.plot(x, np.sin(x)) #plt.show()
Para obter a chave do menor valor de um dicionário, outra forma, talvez mais eficiente, é a seguinte:
min_preco = min(d, key=d.get)
( vale também para max() )
CurtirCurtido por 1 pessoa
correto, mas nesse caso será retornado apenas o valor da chave, enquanto o modelo que apresentei antes é para acessar o valor da chave e conteúdo correspondente àquela chave como uma tupla. No exemplo que você mostra, se eu quisesse o conteúdo da chave do menor valor ainda teria que usar
d[min_preco]
. E por fim para a tupla criat um novo objeto a associar ambos resultados:CurtirCurtir
Tu tens razão.
De fato eu havia ignorado esse ponto e a sugestão não retorna o valor esperado, conforme a postagem original.
De toda a forma, a correção que vc ofereceu para a sugestão ainda é mais eficiente que a função zip em caso de listas muito grandes. Em listas pequenas a diferença é irrelevante e fica a gosto do programador. 😉
Veja, por exemplo, o “benchmark de pobre” abaixo (python3).
São três formas diferentes de se obter o mesmo resultado. No pc que uso aqui, o tempo de execução (s) ficou em:
f1: 0.8307011289980437
f2: 0.8217778760008514
f3: 1.0640241279979819
CurtirCurtido por 1 pessoa