J'ai 3 fichiers Mon code est inférieur p> ze_1.py code>
Taille_2.py code>
taille.py code>
{315:['./size.py']
249 : ['size_1.py', './size_2.py']
}
3 Réponses :
Vous pouvez simplement ajouter un chèque si vous pouvez voir si la touche (taille) existe déjà dans le dictionnaire:
import os result = {} for (dirname,dirs,files) in os.walk('.'): for filename in files: if filename.endswith('.py'): thefile = os.path.join(dirname,filename) size = (os.path.getsize(thefile),thefile) # print (size) if size[0] in result: result[size[0]].append(size[1]) else: result[size[0]] = [size[1]] print (result)
Vous ne mettez que des chaînes dans les valeurs de résultat code> dictionnaire. Vous devriez mettre des listes de chaînes. Pour ce faire, je vous suggère d'utiliser
de la classe code> de la classe pour définir directement un dictionnaire avec des listes comme des valeurs, ce qui est plus confortable.
Je peux également vous suggérer des améliorations mineures de votre code de lisibilité, comme suit: import os
from collections import defaultdict
result = defaultdict(list)
for (dirname,dirs,files) in os.walk('.'):
for filename in files:
if filename.endswith('.py'):
thefile = os.path.join(dirname,filename)
size = os.path.getsize(thefile)
result[size].append(thefile)
print (result)
Vous pouvez utiliser une liste de liste de défaut pour le faire facilement, il suffit d'ajouter des valeurs au lieu d'attribuer.
import os result = {} for (dirname,dirs,files) in os.walk('.'): for filename in files: if filename.endswith('.py'): thefile = os.path.join(dirname,filename) size = (os.path.getsize(thefile),thefile) # print (size) result.setdefault(size[0], []).append(size[1]) print (result)
Pouvez-vous expliquer mieux la relation entre votre entrée et votre sortie?