Imbrication de dictionnaire Python

Imbriqué

Parfois, vous devez stocker une série de dictionnaires dans une liste ou stocker une liste en tant que valeur dans un dictionnaire. Cette exigence est appelée imbrication. Vous pouvez imbriquer des dictionnaires dans des listes, imbriquer des listes dans des dictionnaires et même des dictionnaires dans des dictionnaires. L'imbrication est une fonctionnalité puissante.
1. Liste des dictionnaires
Prenons un exemple. Le dictionnaire alien_0 contient toutes sortes d'informations sur un étranger, mais il ne peut pas stocker les informations sur le deuxième étranger, encore moins les informations sur tous les étrangers sur l'écran Et les extraterrestres? Une façon consiste à créer une liste d'étrangers, où chaque étranger est un dictionnaire contenant diverses informations sur l'étranger. Par exemple:

alien_0 = {'color' : ' green ' , ' points ' : 5}
alien_1 = {'color' : ' yellow ' , 'points' : 10}
alien_2 = {'color' : 'red', 'points' : '15'}

aliens = [alien_0 ,  alien_1 , alien_2]

for alien in aliens:
	print(alien)

book@www.100ask.org:~/python/L9$ python aliens.py
{'color': ' green ', ' points ': 5}
{'color': ' yellow ', 'points': 10}
{'color': 'red', 'points': '15'}

Créez d'abord trois dictionnaires, chacun représentant un étranger. Ensuite, nous mettons ces dictionnaires dans une liste de noms étrangers. Enfin, nous parcourons la liste et imprimons chaque étranger.
Bien sûr, il est plus réaliste qu'il y ait plus de trois extraterrestres dans le jeu, sinon le jeu est ennuyeux, n'est-ce pas, et chaque extraterrestre est automatiquement généré à l' aide de code , jetons un coup d'œil à un peu de prune, nous Utilisez range () pour générer 30 extraterrestres:

# Create empty list, use it store alien
aliens = []

#create thirties alien
for alien_number in range(30):
	new_alien = {'color' : 'green' , 'points' : 5, 'speed' : 'slow'}
	aliens.append(new_alien)

#display five alien
for alien in aliens[:5]:
	print(alien)
print("...")

#Show how many aliens have been created
print("Total number of aliens: " + str(len(aliens)))
book@www.100ask.org:~/python/L9$ python aliens.py
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
...
Total number of aliens: 30

Ces extraterrestres créés ont les mêmes caractéristiques, mais selon Python, chaque extraterrestre est indépendant, de sorte que nous pouvons modifier chaque extraterrestre indépendamment.
Dans quelles circonstances avez-vous besoin de traiter avec des groupes d'étrangers? Imaginez qu'à mesure que le jeu progresse, certains extraterrestres changeront de couleur et se déplaceront plus rapidement. Si nécessaire, nous pouvons utiliser la boucle for et l'instruction if pour modifier la couleur de certains extraterrestres. Par exemple, vous devez modifier les trois premiers extraterrestres en jaune, avec une vitesse moyenne et une valeur de 10 points. Vous pouvez le faire:

# Create empty list, use it store alien
aliens = []

#create thirties alien
for alien_number in range(0 , 30):
	new_alien = {'color' : 'green' , 'points' : 5, 'speed' : 'slow'}
	aliens.append(new_alien)

#display five alien
for alien in aliens[0 : 3]:
	if alien['color'] == 'green':
		alien['color'] = 'yellow'
		alien['speed'] = 'medium'
		alien[' points '] = 10
for alien in aliens[0 : 5]:
	print(alien)
	
print("...")

book@www.100ask.org:~/python/L9$ python aliens.py
{'color': 'yellow', 'points': 5, 'speed': 'medium', ' points ': 10}
{'color': 'yellow', 'points': 5, 'speed': 'medium', ' points ': 10}
{'color': 'yellow', 'points': 5, 'speed': 'medium', ' points ': 10}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
...

Compte tenu de la nécessité de modifier les informations des trois premiers étrangers, il est nécessaire de parcourir une tranche contenant uniquement ces étrangers. Actuellement, tous les extraterrestres sont verts, mais ce n'est pas toujours le cas, nous avons donc écrit une déclaration if pour garantir que seuls les extraterrestres verts sont modifiés. Si l'étranger est vert, nous changerons sa couleur en «jaune», changerons sa vitesse en «moyen» et changerons ses points en 10.
Bien sûr, il peut être étendu comme suit:

for alien in aliens[0 : 3]:
	if alien['color'] == 'green':
		alien['color'] = 'yellow'
		alien['speed'] = 'medium'
		alien[' points '] = 10
	elif alien['color'] == 'yellow':
		alien['color'] = 'red'
		alien['speed'] = 'fast'
		alien['points'] = 15

Pensez à la façon de changer le jaune en rouge?
Il est souvent nécessaire d'inclure un grand nombre de dictionnaires dans la liste, et chaque dictionnaire contient beaucoup d'informations sur un objet spécifique. Par exemple, vous devrez peut-être créer un dictionnaire pour chaque utilisateur du site Web et stocker ces dictionnaires dans une liste appelée utilisateurs. Dans cette liste, tous les dictionnaires ont la même structure, vous pouvez donc parcourir cette liste et les utiliser Chaque dictionnaire.
2. Lors du stockage de la liste dans le dictionnaire,
vous devez stocker la liste dans le dictionnaire au lieu de stocker le dictionnaire dans la liste. Par exemple, comment décrire la pizza commandée par le client, la liste d'utilisation ne peut stocker que les ingrédients de la pizza à ajouter; mais si vous utilisez un dictionnaire, vous pouvez non seulement inclure la liste des ingrédients, mais également contenir d'autres descriptions sur la pizza.
Prenons un exemple spécifique à regarder, vous devez stocker deux types d'informations sur la pizza: le type de peau et la liste des ingrédients. La liste des ingrédients est une valeur associée à la clé «garnitures». Pour accéder à la liste, nous utilisons le nom du dictionnaire et la clé 'toppings', tout comme pour accéder aux autres valeurs du dictionnaire. Il retournera une liste d'ingrédients au lieu d'une seule valeur:

pizza = {
	'crust' : 'thick',
	'toppings' : ['mushrooms' , 'extra cheese'] ,
	}

print("You ordered a " + pizza['crust'] + " -crust pizza " + 
	" with the following toppings: ")
for topping in pizza['toppings']:
	print("\t" + topping)

book@www.100ask.org:~/python/L9$ python pizza.py
You ordered a thick -crust pizza  with the following toppings:
        mushrooms
        extra cheese

Dans l'exemple, nous avons d'abord créé une liste, qui stockait des informations sur les pizzas commandées par les clients. Dans ce dictionnaire, une clé est «crust» et la valeur associée est la chaîne «thick»; la clé suivante est «toppings» et la valeur associée est une liste, qui stocke la demande du client d'ajouter Ingrédients.
Chaque fois que vous devez associer une clé à plusieurs valeurs dans un dictionnaire, vous pouvez imbriquer une liste dans le dictionnaire.
Ci-dessous, nous donnons un exemple pour voir:

favorite_languages = {
	'jen' : ['python' , 'ruby'],
	'sarah' : ['C'],
	'edward' : ['ruby' , 'go'],
	'phil' : ['python' , 'haskell'],
	}
for name , languages in favorite_languages.items():
	print("\n" + name.title() + " 's favorite languages are:")
	for language in languages:
		print("\t" +language.title())

book@www.100ask.org:~/python/L9$ python favorite_languages.py

Sarah 's favorite languages are:
        C

Edward 's favorite languages are:
        Ruby
        Go

Jen 's favorite languages are:
        Python
        Ruby

Phil 's favorite languages are:
        Python
        Haskell

Le programme peut être encore amélioré comme suit:

favorite_languages = {
	'jen' : ['python' , 'ruby'],
	'sarah' : ['C'],
	'edward' : ['ruby' , 'go'],
	'phil' : ['python' , 'haskell'],
	}
	
for name , languages in favorite_languages.items():
	if len(languages) > 1:
		print("\n" + name.title() + " 's favorite languages are:")
		for language in languages:
			print("\t" +language.title())
	else:
		for language in languages:
			print( name.title() + " 's favorite languages is " + language.title())

book@www.100ask.org:~/python/L9$ python favorite_languages.py
Sarah 's favorite languages is C

Edward 's favorite languages are:
        Ruby
        Go

Jen 's favorite languages are:
        Python
        Ruby

Phil 's favorite languages are:
        Python
        Haskell

3. Stockez le dictionnaire
dans le dictionnaire Vous pouvez imbriquer le dictionnaire dans le dictionnaire, mais ce faisant, le code peut devenir compliqué. Par exemple, s'il y a plusieurs utilisateurs de site Web, chaque utilisateur a un nom d'utilisateur unique, vous pouvez utiliser le nom d'utilisateur comme clé dans le dictionnaire, puis stocker les informations de chaque utilisateur dans un dictionnaire et utiliser le dictionnaire comme nom d'utilisateur La valeur associée. Dans le programme suivant, pour chaque utilisateur, nous avons stocké ses trois informations: prénom, nom et lieu de résidence; pour accéder à ces informations, nous parcourons tous les noms d'utilisateurs et accédons aux associés à chaque nom d'utilisateur Dictionnaire d'information:

users = {
	'aeinstein' : {
		'first' : 'albert',
		'last' : 'einstein',
		'location' : 'princeton',
		},
	'mcurie' : {
		'first' : 'marie',
		'last' : 'curie',
		'location' : 'paris',
		}
	}

for username, userinfo in users.items():
	print("\nUsername: " + username)
	full_name = userinfo['first'] + userinfo['last']
	location = userinfo['location']

	print("\tFull name: " + full_name.title())
	print("\t location: " + location.title())

book@www.100ask.org:~/python/L9$ python many_users.py

Username: aeinstein
        Full name: Alberteinstein
         location: Princeton

Username: mcurie
        Full name: Mariecurie
         location: Paris

Dans cet exemple, définissez d'abord un dictionnaire nommé users, qui contient deux clés: les noms d'utilisateurs "aeinstein" et "mcurie"; la valeur associée à chaque clé est un dictionnaire, qui contient le nom de l'utilisateur, Nom et lieu de résidence. Parcourez d'abord les utilisateurs du dictionnaire, laissez python stocker à tour de rôle chaque clé dans le nom d'utilisateur de la variable et stockez le dictionnaire associé à la clé actuelle dans la variable userinfo, puis dans la boucle principale, nous imprimons le nom d'utilisateur, puis commençons à accéder à l'interne Dictionnaire, la variable userinfo contient le dictionnaire d'informations utilisateur et le dictionnaire contient trois clés: `` première '', `` dernière '' et `` emplacement ''; pour chaque utilisateur, nous utilisons ces clés pour générer un nom et un lieu de résidence soignés, puis Imprimez-le.
Remarque: La structure du dictionnaire pour chaque utilisateur est la même. Bien que Python n'ait pas une telle exigence, il facilite la gestion des dictionnaires imbriqués. Si le dictionnaire de chaque utilisateur contient des clés différentes, le code à l'intérieur de la boucle for sera plus compliqué

newpeopel_0 = {'name' : 'xiao ming'  , 'age ' : 23  , 'city' : 'Beijing'      , 'jiaxiang'  : 'hebei',}
newpeopel_1 = { 'name' : 'xiao hong' , 'age' : 18  , 'city' : 'Shanghai'  , 'jiaxiang'  : 'shanghai',}
newpeopel_2 = { 'name' : 'lao wang'   ,  'age' : 45  , 'city' :  'Shenzhen' , 'jiaxiang'  : 'shenzhen',}

newpeopels = [newpeopel_0 , newpeopel_1, newpeopel_2]

for newpeopel in newpeopels:
	print(newpeopel)
book@www.100ask.org:~/python/L9$ python new\ peopel.py
{'city': 'Beijing', 'jiaxiang': 'hebei', 'name': 'xiao ming', 'age ': 23}
{'city': 'Shanghai', 'age': 18, 'jiaxiang': 'shanghai', 'name': 'xiao hong'}
{'city': 'Shenzhen', 'age': 45, 'jiaxiang': 'shenzhen', 'name': 'lao wang'}

newpeopels = {
	'xiaoming' : [23 , 'Beijing', 'HeBei'],
	'xiaohong' : [18 , 'ShangHai' , 'ShangHai'],
	'laowang' :  [45 ,  'ShenZhen', 'ShenZhen'],
	}

for name, userinfos in newpeopels.items():
	print("\n name: " + name.title())
	for info in userinfos:
		print( info)
book@www.100ask.org:~/python/L9$ python new\ peopel.py

 name: Xiaoming
23
Beijing
HeBei

 name: Xiaohong
18
ShangHai
ShangHai

 name: Laowang
45
ShenZhen
ShenZhen

Publié 53 articles originaux · loué 16 · visites 2213

Je suppose que tu aimes

Origine blog.csdn.net/m0_37757533/article/details/105341354
conseillé
Classement