0
votes

Comment mettre ma taille et ma taille d'un fichier dans le dictionnaire

J'ai 3 fichiers ze_1.py code> Taille_2.py code> taille.py code>

Mon code est inférieur p>

{315:['./size.py']
249 : ['size_1.py', './size_2.py']
}


1 commentaires

Pouvez-vous expliquer mieux la relation entre votre entrée et votre sortie?


3 Réponses :


0
votes

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)


0 commentaires

1
votes

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)


0 commentaires

0
votes

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)


0 commentaires