Chcę policzyć pliki w katalogu poleceń na podstawie ich rozszerzenia. Tak więc stworzyłem listę ze wszystkimi plikami w CWD, a następnie lista tylko z rozszerzeniami, a następnie wykonałem dykt z tej listy Moje dykt wygląda jak "{" txt ": 0," DOC ": 0}".

 import os,glob

def myfunc(self):
    mypath=os.getcwd() 
    filelist=glob.glob("*") #list with all the files in cwd
    extension_list=[os.path.splitext(x)[1][1:] for x in filelist] #make list with the extensions only
    print(extension_list)

    count=0;
    mydict=dict((x,count) for x in extension_list) #make dict with the extensions as keys and count as value
    print(mydict)

    for i in mydict.values():  #i must do sth else here..
        count+=1
    print(count)
    print(mydict)
0
George 10 październik 2011, 20:35

3 odpowiedzi

Najlepsza odpowiedź

Po prostu iteruj przez listę rozszerzenia i przyciągnij wartość słownika:

for ext in extension_list:
    mydict[ext] += 1
0
Platinum Azure 10 październik 2011, 16:41

Na pewno po prostu chcesz count += i w pętli?

Chociaż istnieje ładna struktura danych, która robi to wszystko dla Ciebie: {{x0 }}.

2
Daniel Roseman 10 październik 2011, 16:42

Jest to idealne użycie dla Collections.Counter Klasa:

>>> from collections import Counter
>>> c = Counter(['foo', 'foo', 'bar', 'foo', 'bar', 'baz'])
>>> c
2: Counter({'foo': 3, 'bar': 2, 'baz': 1})
>>>
1
John Gaines Jr. 10 październik 2011, 16:43