python — подсчитывает файлы (не может подсчитывать значения в словаре)

#python

#python

Вопрос:

я хочу подсчитывать файлы в каталоге команд на основе их расширения. Итак, я создал список со всеми файлами в cwd, затем список только с расширениями, а затем я сделал dict из этого списка.Я сделал dict с параметром count, но я не знаю, как с этим справиться.Мой dict выглядит как «{‘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)
  

Ответ №1:

Конечно, вы просто хотите count = i в своем цикле?

Хотя есть хорошая структура данных, которая делает все это за вас : collections.Counter .

Ответ №2:

Это идеальное использование для коллекций.Класс счетчика:

 >>> from collections import Counter
>>> c = Counter(['foo', 'foo', 'bar', 'foo', 'bar', 'baz'])
>>> c
2: Counter({'foo': 3, 'bar': 2, 'baz': 1})
>>>
  

Комментарии:

1. Вау, серьезно? Большое уважение к коллекции случайных интересных вещей Python. ( 1)

Ответ №3:

Просто выполните итерацию по списку расширений и увеличьте значение словаря:

 for ext in extension_list:
    mydict[ext]  = 1