ABC155 C --Poller avait un problème qui pouvait être résolu avec un tableau associatif, mais je ne pouvais pas bien écrire le titre, j'ai donc pris une note.
On suppose qu'il existe plusieurs clés avec la valeur maximale. (Mis à jour le 19 février 2020)
dic_max.py
#Initialisation appropriée du dictionnaire
d = {}
d["k1"] = 10
d["k2"] = 20
print(d)
# {'k1': 10, 'k2': 20}
dic_max.py
#Traitement pour récupérer la valeur maximale de valeur dans le dictionnaire d-> max(d.values())
max_val = max(d.values())
print(d.values())
print(max(d.values()))
# dict_values([10, 20])
# 20
#C'est une erreur
# print(d.value[0])
# TypeError: 'dict_values' object does not support indexing
dic_max.py
#Pré-traitement pour clé en main et valeur avec instruction for-> d.items()
print(d.items())
# dict_items([('k1', 10), ('k2', 20)])
#C'est une erreur
# print(d_i[0])
# TypeError: 'dict_items' object does not support indexing
dic_max.py
max_k_ls = [kv[0] for kv in d.items() if kv[1]==max_val]
# d.items() = dict_items([('k1', 10), ('k2', 20)])Dès la première boucle
# kv = ('k1', 10)Peut être retiré comme(kv[0] = 'k1'、kv[1] = 10)。
# kv[1] == max_Ce n'est que lorsque val a la même valeur que la valeur maximale, kv est ajouté à la liste.[0](=key)ajouter à
#Idem pour la deuxième fois et les suivantes
#Pour les listes et les taples*Spécifiez comme argument avec->Développé et chaque élément est passé individuellement
print(*max_k_ls)
# k2
AtCoder Beginner Contest 155 Obtenir la valeur maximale / minimale du dictionnaire et sa clé en Python
Méthode conseillée dans les commentaires @shiracamus @konandoiruasa @nkay Merci beaucoup.
・ Lorsque la valeur maximale de la clé n'est pas couverte
>>> d = {"k1": 10, "k2": 20}
>>> d
{'k1': 10, 'k2': 20}
>>> max(d, key=lambda k: d[k])
'k2'
・ Méthode utilisant des pandas
>>> import pandas as pd
>>> import numpy as np
>>> d = {"k1": 10, "k2": 20, "k3": 20}
>>> df = pd.DataFrame([d])
>>> list(df.columns[np.where(df.iloc[0] == df.iloc[0].max())])
['k2', 'k3']