По какой формуле найти лидера у кого больше всего объявлений
У меня есть база телефонных номеров с 3 разных сайтов, где выставляют объявления. К примеру, есть номер телефона, и напротив него - ссылки на сайты, где висят объявления:
+7(999)888-88-88 [1 сайт: 3 объявления, 2 сайт: 0 объявлений, 3 сайт: 0 объявлений]
Как определить лидера?
with open("D:\\SSDTEMP\\download\\Python_work\\звонки\\чс.txt", "r") as f3:
ff = {i[:18]: i[19:-1].split() if i[19:-1] else set() for i in f3.readlines()}
bb={}
for i, i2 in ff.items():
if i2:
bb[i]=dict()
for k in i2:
if "don-m" in k:
bb[i]["don-m"] = bb[i].get("don-m", 0) + 1
if "rusdosug" in k:
bb[i]["rusdosug"] = bb[i].get("rusdosug", 0) + 1
if "ashoo" in k:
bb[i]["ashoo"] = bb[i].get("ashoo", 0) + 1
Ответы (1 шт):
Автор решения: geo
→ Ссылка
Если телефон в наборе - это уникальный элемент в наборе, то как вариант вот так:
data_for_file =['+7(999)888-88-88 [1 сайт: 4 объявления, 2 сайт: 1 объявлений, 3 сайт: 30 объявлений]'+'\n',
'+7(999)888-88-89 [1 сайт: 5 объявления, 2 сайт: 0 объявлений, 3 сайт: 1 объявлений]'+'\n',
'+7(999)888-88-87 [1 сайт: 10 объявления, 2 сайт: 0 объявлений, 6 сайт: 0 объявлений]'
]
with open('task1611413.txt','tw+') as fl:
fl.writelines(data_for_file)
dct = {}
dct_total = {}
with open('task1611413.txt') as fl:
for i in fl:
lst = i.rstrip('\n').split('[')
lst_ = [j.split(':') for j in lst[1][:-1].split(',')]
dct.clear()
for d in lst_:
k = int(d[0].strip(' ').split(' ')[0].strip(' '))
val = int(d[1].strip(' ').split(' ')[0].strip(' '))
dct.setdefault(k,0)
dct[k] = dct[k] + val
dct_total[lst[0].rstrip(' ')] = dct.copy()
result = (None,0)
for item in dct_total.items():
if sum(item[1].values())>result[1]:
result = (item[0],sum(item[1].values()))
print(result)