#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