Найти - Пользователи
Полная версия: как правильно зделать
Начало » Python для новичков » как правильно зделать
1
suord
С питоном только начал разбиратся. Подскажите правельной алгоритм для задачи
В file.txt есть домены, каждий с новой строки.
Нужно подсчитать сколько раз попадается каждий домен. И вивесть результат упорядочен от самого популярного.
В какую сторону копать.
suord
можно сказать что сколько раз попадается каждая строка
FireOwl
f = open('input.txt','r')
dict = {}
for line in f.readlines():
if line[-1:] == '\n': l = line[:-1]
else: l = line
if l in dict: dict[l] += 1
else: dict[l] = 1
f.close()
f = open('output.txt','w')
for item in sorted(dict, key=lambda x: int(dict[x]), reverse=True):
f.write(item+' '+str(dict[item])+'\n')
f.close()
p.s. "правильно сделать“, ”правильный“, ”каждый“, ”вывести"… Копать в сторону правописания. ;)
suord
FireOwl
спасибо большое
s0rg
FireOwl
Зачем людей плохому учишь?
Что за переменная dict?? Зачем эти танцы с обрезанием перевода строки?
Singularitty
а как надо ?
s0rg
Как-то так:

#!/usr/bin/env python
#coding: utf8

import sys
from collections import Counter

TEST_DATA='''test0
test0
test0
test1
test2
test2
'''.splitlines()

def process_data(iterable):
cnt = Counter()
for item in iterable:
cnt[item]+=1
return cnt

def read_file(name):
with open(name) as fd:
lines = filter(bool,\
map(lambda a: a.strip(), fd))
return lines

def main(args):
data = read_file(args[1]) if len(args) == 2 \
else TEST_DATA
stat = process_data(data)

print '\n'.join(map(lambda a: '%d: %s' % (a[1], a[0]),\
sorted(stat.items(), key=lambda a: a[1], reverse=True)))
return 0

sys.exit(main(sys.argv))
doza_and
Я чего-то не понимаю? Вроде задача соответствует примеру из документации.
http://docs.python.org/library/collections.html
from collections import Counter
l=[i.strip() for i in open("a.dat")]
print Counter(l).most_common(len(l))
s0rg
doza_and
Я чего-то не понимаю?
Свой велосипед-то лучше )
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB