J'ai plusieurs dictionnaires dans une liste. Ces dictionnaires contiennent chacun un nom de société et les pièces qu'ils construisent. J'aimerais créer une fonction qui renvoie une nouvelle liste d'entreprises qui font une certaine partie (certaines, certaines ne le font pas).
J'ai réussi à créer une liste extraire tous les noms (valeurs) de la liste. contenant les dictionnaires. «Pensez» que j'ai réussi à créer une fonction qui, compte tenu d'un argument de pièce, peut passer par chaque dict et ajouter dans une nouvelle liste tous les noms de la société qui font cette pièce. Mais j'ai besoin que cette fonction soit de sorte que, selon la partie où je passe comme un argument, il créerait une liste différente chaque fois que (comme le code le fait) écrase la liste. P>
maker1 = {'Name': 'A', 'Parts': ('Eggs', 'Bacon', 'Spam')}
maker2 = {'Name': 'B', 'Parts': ('Eggs', 'Spam')}
maker3 = {'Name': 'C', 'Parts': ('Bacon', 'Beans')}
maker4 = {'Name': 'D', 'Parts': ('Bacon', 'Spam', 'ExtraSpam')}
makerlist = [maker1, maker2, maker3, maker4]
def maker_names(list1):
maker_names = []
for maker in range(len(list1)):
maker_names.append(list1[maker]['Name'])
print(maker_names)
def part_makers(part_name):
part_makers = []
for key in range(len(makerlist)):
if part_name in makerlist[key]['Parts']:
part_makers.append(makerlist[key]['Name'])
print(part_makers)
maker_names(makerlist)
part_makers('Eggs')
part_makers('Beans')
3 Réponses :
IIUC, utilisez sortie: p> à partir de laquelle vous pouvez utiliser : p> collectios.defaultDict code>:
Vous pouvez facilement obtenir le résultat souhaité à l'aide d'une compréhension de liste avec la fabricant code> Vous avez créé tous les dictionnaires exemple: p> sortie: p>
L'utilisation de la méthode du filtre est le moyen le plus simple de le faire: sortie: p>