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é.
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()
{'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'}
prefix + = f '{key} _'
?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()
--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