0
votes

Comment mieux itération via une liste dans un dictionnaire?

J'ai un dictionnaire comme suit:

result1 = { 'name':'Test', 'lastName': 'Test', 'score': '1', 'subjects': 'te'}
result2 = { 'name':'Test', 'lastName': 'Test', 'score': '2', 'subjects': 're'}


2 commentaires

Pouvez-vous montrer ce que vous avez essayé?


résultat1 et résultat2 dans votre exemple de sortie sont exactement les mêmes. Je suppose que le second était censé avoir "score": "2", "sujets": "re '?


5 Réponses :


0
votes

Essayez ceci: xxx

sortie: xxx


0 commentaires

1
votes

Voici une fonction qui décompressez votre dictionnaire.

Nous utilisons d'abord suivant pour trouver une valeur de liste dans le dictionnaire, sa longueur est la taille de sortie attendue.

Notez que cela échouera si le dictionnaire ne contient aucune liste du tout. xxx

sortie xxx < / p>


0 commentaires

0
votes

Vous n'avez pas besoin de boucles imbriquées pour des boucles, une seule boucle est suffisante: xxx

sortie: xxx


0 commentaires

0
votes

Vous pouvez essayer ceci: res1 = {} res2 = {}

for k,v in a.items():
  if(k == "scores"):
    res1[k] = v[0]
    res2[k] = v[1]
  elif(k=="subjects"):
    res1[k] = v[0]
    res2[k] = v[1]
  else:
    res1[k] = v
    res2[k] = v

 print(res1)
 print(res2)


0 commentaires

0
votes

Vous pouvez utiliser zip code> pour attacher des scores et des sujets les uns aux autres, puis ajoutez-le à une nouvelle liste.

d = {'name': 'Test', 'lastName': 'Test', 'scores': ['1', '2'], 'subjects': ['te','re'] }
template = {'name': d['name'], 'lastName': d['lastName']}

res = []
for subject, score in zip(d['subjects'], d['scores']):
    template.update({'subjects': subject, 'scores': score})
    res.append(template)

print(res)


0 commentaires