[Python] Je ne comprends pas ce que je fais avec la table [clé] [0] + = 1

Je ne sais pas ce que je fais avec la table [key] [0] + = 1.

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.

Comment as-tu compris

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

[Python] Je ne comprends pas ce que je fais avec la table [clé] [0] + = 1
Ce que j'ai fait avec les tableaux Python
Je ne comprends pas rejoindre
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai fait un blackjack avec du python!
Ce que j'ai fait pour accueillir le Python2 EOL en toute confiance
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python
Je comprends Python en japonais!
J'ai fait un blackjack avec Python.
Ce que j'ai appris en Python
J'ai créé wordcloud avec Python.
Ce à quoi j'étais accro avec json.dumps dans l'encodage base64 de Python
Que dois-je faire avec la structure de répertoires Python après tout?
[Python] Qu'est-ce qu'une instruction with?
pyenv-vertualenv n'installe pas correctement la série python3
J'ai essayé webScraping avec python.
[python] Quelle est la clé triée?
J'ai envoyé un SMS avec Python
Que faire avec la sortie de PYTHON?
J'ai aimé le tweet avec python. ..
J'ai joué avec PyQt5 et Python3
Je veux déboguer avec Python
J'ai essayé d'exécuter prolog avec python 3.8.2.
J'ai créé un démon avec Python
J'ai essayé la communication SMTP avec Python
Python | Ce que vous pouvez faire avec Python
FBX SDK De quelles compétences ai-je besoin pour créer un programme à l'aide de Python?
Je veux tweeter Twitter avec Python, mais j'y suis accro
Un rappel de ce que je suis resté coincé lors du démarrage d'Atcoder avec python
[Feature Poem] Je ne comprends pas le langage fonctionnel Vous pouvez le comprendre avec Python: Partie 1 Les fonctions qui reçoivent des fonctions sont pratiques.
J'ai fait un compteur de caractères avec Python
J'ai dessiné une carte thermique avec Seaborn [Python]
Je voulais résoudre ABC160 avec Python
Remarques sur la réalisation de l'OCR japonais avec Python
Je veux analyser les journaux avec Python
Je veux jouer avec aws avec python
Ce que j'ai obtenu de Python Boot Camp
J'ai essayé un langage fonctionnel avec Python
J'ai essayé la récurrence avec Python ② (séquence de nombres Fibonatch)
J'ai installé et utilisé Numba avec Python3.5
Question: l'intégration multiple par python ne fonctionne pas
J'ai fait une carte hexadécimale avec Python
Création de tableaux Excel avec Python [Table de gestion des progrès]
J'utilise tox et Python 3.3 avec Travis-CI
J'ai fait un jeu rogue-like avec Python
Ce que j'étais accro à Python autorun
Je voulais résoudre ABC172 avec Python
J'ai fait un simple blackjack avec Python
J'ai créé un fichier de configuration avec Python
# J'ai essayé quelque chose comme Vlookup avec Python # 2
J'ai fait un simulateur de neurones avec Python
Ce que j'ai fait pour économiser la mémoire Python
Ce que j'ai fait quand je suis resté coincé dans le délai avec lambda python