dict in dict Transforme un dict en dict

Concernant le titre, je signalerai qu'il a été implémenté par des débutants en python. En premier lieu, un dict in dict est un dict comme celui ci-dessous.

{'name': '2M2VgARX', 'js': {'a': 0, 'b': 0, 'c': 'sdmo'}}

La clé in dict et la clé in dict sont uniques même si elles sont combinées, j'ai donc voulu les combiner dans un dictionnaire, j'ai donc créé une telle fonction.

Image après conversion

{'name': '2M2VgARX', 'js_a': 0, 'js_b': 0, 'js_c': 'sdmo'}

Il semble y avoir une fonction standard, mais parce que ma capacité de recherche est faible Veuillez noter qu'il n'a pas été trouvé.

la mise en oeuvre

import secrets
import string


def dict_extract(item, prefix=''):
    return_dict = {}
    for key, value in item.items():
        if isinstance(value, dict):
            prefix += f'{key}_'
            return_dict.update(dict_extract(value, prefix))
        else:
            return_dict[prefix + key] = value
    return return_dict


def main():
    # create sample data
    items =[]
    alphabet = string.ascii_letters + string.digits
    password = ''.join(secrets.choice(alphabet) for i in range(8))
    for i in range(10):
        password = ''.join(secrets.choice(alphabet) for i in range(8))
        tmp = {'a': i, 'b': i*2, 'c': 'sdmo'}
        tmp_item = {'name': password, 'js': tmp}
        items.append(tmp_item)

    # print dict
    for item in items:
        print(dict_extract(item))


if __name__ == "__main__":
    main()

Résultat d'exécution

{'name': 'ZQ4NaBbc', 'js_a': 0, 'js_b': 0, 'js_c': 'sdmo'}
{'name': 'E5hS6IqS', 'js_a': 1, 'js_b': 2, 'js_c': 'sdmo'}
{'name': 'PC1xzQGi', 'js_a': 2, 'js_b': 4, 'js_c': 'sdmo'}
{'name': 'McJTGCjl', 'js_a': 3, 'js_b': 6, 'js_c': 'sdmo'}
{'name': '3hYsdwB8', 'js_a': 4, 'js_b': 8, 'js_c': 'sdmo'}
{'name': 'UKocBVhJ', 'js_a': 5, 'js_b': 10, 'js_c': 'sdmo'}
{'name': '3QVlhwOn', 'js_a': 6, 'js_b': 12, 'js_c': 'sdmo'}
{'name': 'bspVE4Hp', 'js_a': 7, 'js_b': 14, 'js_c': 'sdmo'}
{'name': 'rLLUxF4f', 'js_a': 8, 'js_b': 16, 'js_c': 'sdmo'}
{'name': '5wt3UCvR', 'js_a': 9, 'js_b': 18, 'js_c': 'sdmo'}

Commentaire

De côté

Je pense qu'il est plus intelligent de se joindre au préfixe sous forme de liste. Dans ce cas, évitez de passer la liste comme argument. list est un objet modifiable et modifiable. Si vous spécifiez un objet mutable comme valeur initiale de l'argument, cet objet est créé lorsque la fonction est définie, donc si vous appelez la fonction avec l'argument correspondant omis, le même objet sera utilisé.

code

def string_arg2(s_arg=['hatsumi']):
    s_arg.append(' san')
    print(''.join(s_arg))

for i in range(10):
    string_arg2()

résultat

hatsumi san
hatsumi san san
hatsumi san san san
hatsumi san san san san
hatsumi san san san san san
hatsumi san san san san san san
hatsumi san san san san san san san
hatsumi san san san san san san san san
hatsumi san san san san san san san san san
hatsumi san san san san san san san san san san

Le résultat est comme un service de gestion de cartes de visite. À propos, dict est également modifiable, alors soyez prudent. L'initialisation demande beaucoup de travail.

def string_arg2(s_arg=None):
    if s_arg is None:
        s_arg = ['hatsumi']
    s_arg.append(' san')
    print(''.join(s_arg))

for i in range(10):
    string_arg2()

Recrutement

--Il semble y avoir une fonction standard de l'implémentation ci-dessus. Je vous serais reconnaissant si vous pouviez me dire comment le trouver. .. ――Y a-t-il un nom général pour dict dans dict? Dictionnaire imbriqué? Abrégé en d en d, il ressemble à docker dans docker et est déroutant ...

Recommended Posts

dict in dict Transforme un dict en dict
Prendre une capture d'écran en Python
Créer une fonction en Python
Créer un dictionnaire en Python
Utiliser un dict clé de liste en Python
Créer un bookmarklet en Python
Dessinez un cœur en Python
Exécuter un script multiligne dans un PDB
J'obtiens un UnicodeDecodeError avec mecab-python3
Probablement dans un serpent Nishiki (Titre original: Peut-être en Python)
Compter des chaînes spécifiques dans un fichier
Ecrire une dichotomie en Python
Ecrire un test piloté par table en C
[python] Gérer les fonctions dans une liste
Appuyez sur une commande en Python (Windows)
Créer un lecteur CSV avec Flask
Créer un conteneur DI avec Python
Y a-t-il un spécial dans scipy? ??
J'obtiens une KeyError dans pyclustering.xmeans
Remarque à propos de get_scorer de sklearn
Implémenter un paramètre de date dans Tkinter
ABC166 en Python A ~ C problème
Ecrire des algorithmes A * (A-star) en Python
Gérer les demandes dans un processus distinct
Enregistrer une variable spécifique dans tensorflow.session
Créer un fichier binaire en Python
python / Créer un dict à partir d'une liste.
Résoudre ABC036 A ~ C avec Python
Démarrez avec SQLite dans un langage de programmation
Ecrire un graphique à secteurs en Python
Ecrire le plugin vim en Python
Écrire une recherche de priorité en profondeur en Python
Implémentation d'un algorithme simple en Python 2
Enregistrer les fichiers au format YAML avec PyYAML
Résoudre ABC037 A ~ C avec Python
Exécutez un algorithme simple en Python
Dessinez un diagramme CNN en Python
Lors de la création d'une matrice dans une liste
J'ai mis dans un Bash appelé Powerline-shell qui me rend fou
Créez un générateur de rideaux avec Blender
Créer une chaîne aléatoire en Python
Lors de l'écriture d'un programme en Python
Créer un bot LINE avec Django
Obtenir un booléen avec une requête Flask
Générer une collection de première classe en Python
Installer Django dans l'environnement virtuel pipenv
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Résoudre ABC175 A, B, C avec Python
Utiliser l'impression dans l'expression lambda Python2
Un client HTTP simple implémenté en Python
Je veux imprimer dans la notation d'inclusion
Précautions lors du décapage d'une fonction en python
Ecrire le test dans la docstring python
Afficher une liste d'alphabets en Python 3
Afficher les diagrammes matplotlib dans une application Web
Essayez d'envoyer un paquet SYN en Python