ABC155 C --Poller hatte ein Problem, das mit einem assoziativen Array gelöst werden konnte, aber ich konnte den Titel nicht gut schreiben, also machte ich mir eine Notiz.
Es wird davon ausgegangen, dass es mehrere Schlüssel mit dem Maximalwert gibt. (Aktualisiert am 19. Februar 2020)
dic_max.py
#Angemessene Wörterbuchinitialisierung
d = {}
d["k1"] = 10
d["k2"] = 20
print(d)
# {'k1': 10, 'k2': 20}
dic_max.py
#Verarbeitung zum Abrufen des Maximalwerts des Werts im Wörterbuch d-> max(d.values())
max_val = max(d.values())
print(d.values())
print(max(d.values()))
# dict_values([10, 20])
# 20
#Dies ist ein Fehler
# print(d.value[0])
# TypeError: 'dict_values' object does not support indexing
dic_max.py
#Vorverarbeitung, um Schlüssel und Wert mit for-Anweisung zu drehen-> d.items()
print(d.items())
# dict_items([('k1', 10), ('k2', 20)])
#Dies ist ein Fehler
# 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)])Aus der ersten Schleife
# kv = ('k1', 10)Kann als herausgenommen werden(kv[0] = 'k1'、kv[1] = 10)。
# kv[1] == max_Nur wenn val den gleichen Wert wie der Maximalwert hat, wird kv zur Liste hinzugefügt.[0](=key)hinzufügen
#Gleiches gilt für das zweite und nachfolgende Mal
#Für Listen und Taples*Geben Sie als Argument mit an->Erweitert und jedes Element wird einzeln übergeben
print(*max_k_ls)
# k2
AtCoder Beginner Contest 155 Ermitteln Sie den Maximal- / Minimalwert des Wörterbuchs und seines Schlüssels in Python
Methode in den Kommentaren empfohlen @ Shiracamus @konandoiruasa @nkay Vielen Dank.
・ Wenn der Maximalwert des Schlüssels nicht abgedeckt ist
>>> d = {"k1": 10, "k2": 20}
>>> d
{'k1': 10, 'k2': 20}
>>> max(d, key=lambda k: d[k])
'k2'
・ Methode mit 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']
Recommended Posts