En regardant le cahier de quelqu'un d'autre sur Kaggle, j'ai trouvé la description suivante.
import random
import string
import collections
action_seq = [2,1]
action_seq, table = [], collections.defaultdict(lambda: [0, 0, 0])
key = ''.join([str(a) for a in action_seq[:-1]])
table[key][0] += 1
print(table[key][0])
Le résultat de l'exécution ci-dessus est le suivant.
1
Pour être honnête, je n'avais aucune idée de ce qui donnerait un "1". J'ai également vérifié le contenu de traitement de collections.defaultdict () et lambda, mais je ne comprends toujours pas. En premier lieu, je ne pouvais pas imaginer quel serait le résultat si je faisais "+ = 1" sur la séquence.
J'ai pu comprendre comment bouger en effectuant le debuck suivant.
import random
import string
import collections
action_seq, table = [], collections.defaultdict(lambda: [0, 0, 0])
action_seq = [2,1]
key = ''.join([str(a) for a in action_seq[:-1]])
print(table)
table[key][0] += 1
print(table)
table[key][1] += 1
print(table)
table[key][2] += 1
print(table)
Le résultat est le suivant.
defaultdict(<function <lambda> at 0x7fd38dfa43b0>, {})
defaultdict(<function <lambda> at 0x7fd38dfa43b0>, {'2': [1, 0, 0]})
defaultdict(<function <lambda> at 0x7fd38dfa43b0>, {'2': [1, 1, 0]})
defaultdict(<function <lambda> at 0x7fd38dfa43b0>, {'2': [1, 1, 1]})
Ce qui ressort de ce résultat est que "table [clé] [0] + = 1" est traitée avec la configuration suivante.
table[key]...Définir la clé de table sur "2"
[0]...Défini par défaut[0,0,0]Spécifiez la première colonne de
+= 1...Ajoutez 1 à la valeur de la première colonne du tableau clé de table 2
Il s'est avéré que [0] spécifié après [clé] est une spécification de colonne.
Il m'a fallu beaucoup de temps pour comprendre ce processus, alors j'espère que cela aide.
Recommended Posts